Traccar server: a Java back end for 200-plus GPS protocols
Traccar GPS Tracking System. It supports more than 200 GPS protocols and more than 2000 models of GPS tracking devices.
At a glance
- What is it?
- Traccar is an open source GPS tracking system whose back-end service speaks more than 200 device protocols. This review covers what the repository actually contains, how to build it, how to talk to its REST API, and where it stops being the right choice.
- Who is it for?
- Adopt Traccar if you have a mixed fleet of GPS trackers, need to keep position data on your own database, and are comfortable running a Java service and reading an OpenAPI spec. Do not adopt it if you want a hosted product with a support contract, or if you expect the README to walk you through deployment: it defers to the official website's build page.
- Can I use it commercially?
- Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 4 days ago.
- What is it written in?
- Mainly Java, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 25, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
What the Traccar repository actually is, and who needs it
The repository is the Java back end only. The README is explicit that the web app, the manager app and the client app live in separate repositories, so cloning this one gives you a protocol server, a REST API and a database schema, not a finished product with a map on screen. That split matters when you evaluate it. If you want a tracker platform you can log into, you are assembling at least two projects.
The problem it solves is protocol fragmentation. Fleet operators end up with devices from several vendors, each speaking a different wire format, and the usual answer is one vendor portal per device family. Traccar's claim is that the server accepts more than 200 GPS protocols and more than 2000 device models, normalises them, and stores positions in whatever major SQL database you already run. The audience is therefore engineers and integrators, not end users: people who can deploy a Java service, point devices at a port, and consume an HTTP API.
One thing the README does not do is sell you on scale. There are no throughput figures, no device-count guidance, no sizing table. You will have to derive capacity from your own hardware and database, not from the project's documentation.
How the protocol server and REST API fit together
The architecture visible in the repository is a listener-and-decoder pipeline. Device traffic arrives on network ports; each supported protocol has its own decoder that turns the vendor's binary or text payload into a common position record; the record is written through to the SQL database; and the REST API reads that state back out for clients. The openapi.yaml file at the repository root is the machine-readable description of that API surface, which means you can generate a client rather than hand-writing request code against prose docs.
Supporting directories confirm the shape of the system. schema/ holds database definitions, setup/ holds packaging and service setup, tools/ holds auxiliary utilities, and docker/ holds container definitions. templates/ is where notification and report templates live, which lines up with the README's feature list of email and SMS support, alarms and notifications, geofencing, and detailed and summary reports.
Two consequences follow. First, the database is not optional infrastructure; it is the system of record, so backup and migration strategy are your problem. Second, because decoders are per protocol, adding an unsupported device is a code change in Java, not a configuration entry. The README does not describe a plugin mechanism for third-party decoders, so treat protocol coverage as whatever the repository ships.
Building Traccar and making a first API call
The README does not contain install steps. It says to read the build from source documentation on the official website, at https://www.traccar.org/build/. What the repository does give you is a Gradle build: build.gradle, settings.gradle, the gradlew wrapper script, and a gradle/ directory. That is enough to state the entry point, but not enough to promise a specific artefact path.
The wrapper is the standard way to invoke the build without installing Gradle yourself. The repository ships the gradlew script at the root, and on Windows it ships gradlew.bat instead. The README does not spell out the task names or the resulting artefact locations, so read build.gradle before running anything.
./gradlewgradlew.batFor a container-based deployment, the docker/ directory holds the definitions the project maintains. The README does not list image names or tags, so read the files in that directory rather than guessing a tag.
Once a server is running, the API is described by openapi.yaml. The README links to the Traccar API documentation on the official website, and the spec file in the repository is the authority on paths, parameters and authentication. The README does not document default ports or default credentials, so take both from your own configuration.
Device ports and the configuration you have to supply
Device connectivity is port-based, and each protocol family expects traffic on a port the server is configured to listen on. The repository does not publish a port table in the README, and the search data does not supply one either. That means the port map lives in the server configuration and in the official documentation, and you should read it there rather than copying a number from a blog post.
The practical consequence is that onboarding a device is a two-sided job. On the server side you must have the listener enabled for that protocol. On the device side you must set the vendor's server address and port fields, which every tracker firmware names differently. The README's device-management feature covers the account and device records, but it does not describe a guided wizard for this step.
This is the part of Traccar that rewards patience and punishes assumptions. If you cannot find your model in the supported device list, no amount of configuration will make it work, because the decoder has to exist in the Java source.
Where Traccar is the wrong tool
Traccar assumes you want to operate infrastructure. If your requirement is a tracking product with an SLA, an account manager and someone else on call at 3am, a self-hosted Java service with a SQL database is the wrong shape, regardless of how many protocols it decodes. The README offers no hosted tier, no support terms and no uptime commitment.
There is also a documentation gap that matters during evaluation. The README lists features at a high level and then delegates the build to the website. It does not document rollback, upgrade procedures between major versions, or how schema changes are applied when you move from one release to the next. The repository has a schema/ directory, but the README does not explain the migration path. If your organisation requires a written upgrade runbook before deployment, you will be writing that runbook yourself from the release history.
Finally, protocol breadth is not the same as protocol depth. A device can be listed as supported while a particular firmware revision sends fields the decoder ignores. The README makes no per-model guarantees, so validation against your actual hardware is the only way to know.
Traccar against a hosted platform such as GPSWOX
The comparison people search for is Traccar against hosted tracking platforms such as GPSWOX, and the difference is not a feature checklist. It is who owns the runtime. A hosted platform gives you a login, a device provisioning flow and a support channel, and you pay for that in subscription fees and in the fact that your position history sits in someone else's database. Traccar gives you the server, the schema and the API under Apache-2.0, and you pay for it in operational work: Java runtime, database, ports, backups, upgrades.
That trade-off is the whole decision. A small fleet with a handful of consumer trackers and no engineering time is better served by a hosted product. An integrator embedding tracking into an existing platform, or an operator with data-residency constraints, gets more from Traccar because the REST API and the database are both open to them. The README's own framing supports this: it positions the repository as a back-end service with an easy-to-use REST API, not as a turnkey service.
On the client side, the README lists the Traccar Client app and the Traccar Manager app as separate repositories. If your plan is to use phones as trackers, you are adopting three projects, not one.
Licence, maintenance and upgrade cost
Traccar is Apache-2.0. The licence text in the README grants use, modification and distribution with the usual conditions: retain the licence and notices, and note that the software is provided without warranties or conditions of any kind. That permissive framing is what makes it viable to embed the server in a commercial offering. It is not legal advice, and if you plan to redistribute a modified server you should read LICENSE.txt in full and take your own advice on notice obligations.
The repository is not archived, and the last push was on 2026-08-26, the same date as the v6.15.3 release. The recent release history shows v6.15.1 and v6.15.2 both landing on 2026-08-23, with v6.15.3 following three days later. That cadence tells you patch releases arrive quickly, which is good for fixes and awkward for anyone who pins versions and upgrades on a quarterly cycle.
Upgrade cost is the least documented part of the project. Because the README does not cover schema migration or rollback, the honest position is that each upgrade is a small project: read the release notes, check whether schema/ changed, and test against a copy of your database before touching production.
Editorial conclusion
Adopt Traccar if you have a mixed fleet of GPS trackers, need to keep position data on your own database, and are comfortable running a Java service and reading an OpenAPI spec. Do not adopt it if you want a hosted product with a support contract, or if you expect the README to walk you through deployment: it defers to the official website's build page. Before committing, verify three things: that your specific device model appears in the supported device list, that your database system is one Traccar can use, and that the Apache-2.0 terms fit how you plan to redistribute the server.
Frequently asked questions
How does Traccar work?
The back-end service listens for device traffic on network ports, decodes each supported vendor protocol into a common position record, and stores it in a SQL database. A REST API, described by openapi.yaml, exposes that data to clients such as the separate web app.
Is Traccar free to use?
The repository is licensed under Apache-2.0, which permits use, modification and distribution under the licence conditions. The README documents no paid tier, but it also documents no support terms, so any commercial support would come from elsewhere.
How much does Traccar cost?
No pricing appears in the README. The software itself is Apache-2.0 licensed, and the real cost is operational: a Java runtime, a supported SQL database, server capacity, and the time to configure device ports and upgrades.
How to install Traccar server on Ubuntu?
The README does not give per-platform install steps. It directs readers to the build from source documentation on the official website, and the repository provides a Gradle wrapper plus a docker/ directory for container-based deployment.
How to use the Traccar API?
The API is described by the openapi.yaml file at the repository root, which the README links to as the Traccar REST API. Use that spec to generate a client or to check paths and parameters, since the README does not document endpoints itself.
What is Traccar Client?
Traccar Client is a separate mobile app for tracking phones, listed in the README alongside the web app and the manager app. It is not part of this repository, which contains only the Java back-end service.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/traccar-traccar)
Community notes