Understanding how 51Degrees ensures reliability across diverse environments and what it means for your setup.
When choosing a device detection or IP intelligence library (or any SDK), one of the biggest concerns is: Will this work reliably in my environment?
We will walk you through our Tested Versions documentation, our automated nightly tests, and why it matters to you — whether you're a developer, operations lead, or architect.
What does “Tested Versions” mean?
In essence, we publish the combinations of CPU architectures, operating systems, and language/runtime versions our engineers have at some point checked builds with. If your setup matches these combinations our libraries will likely function without surprises.
Here are a few highlights from our policy:
- We support ARM / ARM64 (e.g. Apple Silicon, AWS Graviton), x64, and x86 architectures.
- Supported operating systems include many Linux flavors (Alpine, Amazon Linux, CentOS, Oracle Linux, Red Hat, SUSE, Ubuntu), Windows, and macOS.
The list is not exhaustive. If your environment isn’t listed, please raise an issue via our GitHub page so that we can consider including it.
We focus on LTS (Long Term Support) versions of programming languages, which reduces the risk of sudden breaks when short-lived language versions fall out of support.
We also provide instructions for building from source if a prebuilt binary doesn’t match your environment.
Under the hood: How we automate testing and deployment
It’s one thing to list tested versions and combinations — it’s another to actually use them for every single release; nightly. Here’s how 51Degrees approaches Continuous Integration (CI) and Continuous Deployment (CD):
- GitHub Actions with hosted runners are used nightly.
- Fully automated tests that run nightly across all C/C++, .NET, Java, NGINX, Python, PHP, Node.js, and Go code bases.
- Test coverage aligns with currently supported LTS versions of languages and GitHub runner OS versions and architectures.
- All tests and results are public. Anyone can inspect, replicate, or enhance them.
All this means there are two types of test. One which is nightly, always current, open to inspection, and aligned to GitHub's assessment of popular platforms. The other which is at a point in time. It's just not practical to test everything everywhere all at once. ☺️
If you’re running a non-tested environment
Not every environment in the wild can be tested or supported out of the box. If your exact OS, architecture, or language/runtime version isn’t listed in the Tested Versions documentation, you will likely be able to run 51Degrees successfully. C code is pretty universal. In these cases:
- Build from source: 51Degrees provides source code and build instructions so you can compile the libraries for your environment. This is often the fastest way to make unsupported combinations work.
- Verify dependencies: Non-tested platforms may have subtle differences in their compilers, libraries, or runtime support. Make sure you check the dependencies page and confirm everything is present.
- Run your own tests: Since your setup hasn’t been validated by 51Degrees, it’s important to create an internal test suite to confirm expected behaviour under load and across edge cases.
- Monitor updates: New releases may bring improvements, fixes, or expanded tested coverage. Keeping up to date can reduce risk.

If your environment isn't listed then you should plan extra time for systems integration and potentially custom builds.
Want 51Degrees to add your environment?
If you’d prefer not to manage this process yourself, or if you’d like 51Degrees to test a specific environment or scenario for you, this will require a Priority Support Package. With this package, we can dedicate engineering effort to add your requested environment to our ongoing test suite and provide direct support.
You can purchase a support and maintenance package here.
Why our approach benefits you
- Performance, stability, scalable: Our device detection and IP intelligence code base is written in C code. That means the same code base runs in edge networking equipment like HAProxy, NGINX, and Varnish, and in high level languages like Java and C#. It's fast and memory efficient everywhere offering rock solid stability.
- Reliability in production: If your environment matches a tested combination, you reduce the chances of runtime incompatibilities.
- Transparency & debuggability: You know upfront if your stack is in the “safe zone” or if you need extra steps.
- Fallback via source builds: It's possible to add build from source to your build and deployment pipelines. Many environments already follow this approach.
- Support when needed: If you’d rather not handle unsupported environments yourself, the Priority Support Package gives you peace of mind and systems integration help.
Ensure your environment runs smoothly. Explore our Tested Versions list or try building from source. For tailored support, check out our Priority Support Package.
For a list of common architectures from cloud for real-time web optimization, to in-process in-memory for network equipment, see our deployment options page.