This is a java library that tries to parse and analyze the useragent string (and when available the User-Agent Client Hints) and extract as many relevant attributes as possible.
Works with Java, Scala, Kotlin and provides ready for use UDFs for several processing systems.
The full documentation can be found here https://yauaa.basjes.nl
You can try it online with your own browser here: https://try.yauaa.basjes.nl/.
NOTES
- This runs on a very slow and rate limited machine.
- If you really like this then run it on your local systems. It's much faster that way. A Kubernetes ready Docker image is provided. See this page about the WebServlet for more information.
I'm publishing this under the Apache 2.0 license because I believe it is the best way to make these kinds of projects available to the world.
But do not underestimate how much work went into this. I have spent over a decade tuning this project to what you have now.
All I want to see in return is a little bit of gratitude from the people who use this. If you are a home user/hobbyist/small business then a simple star on the project is enough for me. Seeing that people use and like the things I create is what I'm doing this for. What also really helps are bug reports, headers from real/new devices/browsers that I have net yet seen before and discussions on things you think can be done better.
Despite there not being any obligation (because of the Apache 2.0 license); If you are a big corporation where my code really adds value to the products you make/sell then I would really appreciate it if you could do a small sponsor thing. Buy me lunch (€10), Buy me a game (€100) or what ever you think is the right way to say thank you for the work I have done.
Yet Another UserAgent Analyzer
Copyright (C) 2013-2025 Niels Basjes
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.