Routly.

Comparisons · 8 min read

Looking for a Traccar alternative?

Traccar decodes the devices; Routly is the part your customer sees. When Traccar alone is enough, what Routly adds, and how to run both instead.

Looking for a Traccar alternative? — Routly

Short version. Traccar is a device gateway — Java, Apache-2.0, 200+ protocols — and Routly does not replace it; Routly reads from it. If you need protocol decoding, keep Traccar. If you need trips classified, fuel theft separated from burn, driver scores and per-customer reports, that is the layer above it.

Traccar is very good at the job it does, and Routly does not replace that job — it reads from Traccar. If you arrived here to replace it, the honest answer is that you probably want to keep it.

What Traccar is

An open-source server under Apache-2.0, a decade old, that speaks over two hundred device protocols and turns whatever a tracker emits into positions. It ships a web interface, basic reports and geofences with it. For a large number of fleets that is the whole requirement, and it costs nothing.

Its protocol coverage is the thing nobody should try to rebuild. Teltonika, Queclink, Concox, Ruptela, Suntech, Meitrack, the long tail of Chinese OEM firmwares that each interpret their own spec slightly differently — Traccar has absorbed a decade of that, and every one of those decoders exists because somebody hit the edge case in production.

When Traccar alone is enough

Do not buy something you do not need. Traccar on its own is the right answer when:

  • You want live positions and a track history, and little else.
  • One fleet, one set of users, no customers of your own to isolate.
  • Nobody is asking for fuel-theft detection, driver scoring or scheduled reports.
  • You are comfortable in the database when a question comes up that the interface cannot answer.

If that describes you, close this page. Adding a second system to a setup that already answers your questions is how you end up maintaining two.

Where people run out of it

The pattern is consistent. Traccar keeps decoding devices perfectly well, and the gap opens on the layer above it — the part a fleet manager or a paying customer actually looks at.

Trips that mean something commercially

Traccar records positions and can compute a route. What a business needs is a trip with a start address, an end address, a purpose and a number that goes on an expense claim. Classification — business, personal, commute — is the difference between a track log and something an accountant will accept.

Fuel, including the theft

Fuel level is just another sensor value until something interprets it. A tank going from 400 to 320 litres over a shift is consumption; the same 80 litres disappearing in four minutes at 02:00 in a yard is a drain. Separating the two is a rule about rate of change against ignition state and position, and it is the single feature that most often pays for a fleet platform in the first quarter.

Driver behaviour as a score

Harsh braking and speeding arrive as events. A fleet manager cannot act on ten thousand events; they can act on a ranked list of drivers. Aggregation, weighting and a trend over weeks is a different job from detection.

Reports that arrive without anyone opening a browser

Built, saved, scheduled, and emailed as CSV, Excel or PDF on a Monday morning. The report nobody has to remember to run is the one that changes behaviour.

It stays single-tenant, and permissions show it

Traccar’s own forum is the honest source here: users report permission limits when a manager tries to create users, and performance questions once device counts climb into the thousands. Neither is a flaw; both are the shape of a system built for one fleet being asked to behave like a platform for many.

Many fleets in one deployment

The moment you have customers rather than vehicles, you need each of them isolated: their own users, their own geofences, their own reports, and their own logo on what you send them. Retrofitting that onto a single-tenant system is the expensive kind of rewrite.

Traccar and Routly, side by side

Honest about where each wins:

TraccarRoutly
Device protocols200+, decoded directlyNone — reads from a gateway
LicenceApache-2.0AGPL-3.0, or commercial
Live map and track historyYesYes
Trip classificationNoBusiness, personal, commute
Fuel drain detectionNoSeparated from ordinary burn
Driver scoringRaw eventsAggregated per driver
Scheduled reports by emailNoCSV, Excel, PDF
Multi-tenancySingle tenantIsolated organisations, grants per vehicle
Per-customer report brandingNoLogo and colours per organisation
Telemetry storeIts own databaseClickHouse you run

The first row is the important one. Routly has no device decoders at all and is not trying to acquire them. That is deliberate: it is an application layer, and it needs a gateway underneath.

There is a third name worth putting beside these. Fleetbase is also AGPL-3.0 and also self-hostable, but it is a modular logistics suite — orders, dispatch, routing — with telematics as one module. Routly is the narrower thing: fleet telemetry and the reports built on it, with multi-tenancy aimed at whoever is reselling. If your problem is dispatching deliveries rather than watching vehicles, look at Fleetbase first.

So run both

This is the arrangement we recommend and the one we support. Traccar gets the bytes off the device; Routly reads from it and is the part your customer looks at. You keep the protocol coverage you already rely on and you do not touch a single tracker.

How the wiring actually works

Traccar has a position forwarder built in. Point it at Routly’s webhook endpoint and add a shared secret as a header:

<entry key='forward.enable'>true</entry>
<entry key='forward.type'>json</entry>
<entry key='forward.url'>https://your-routly-host/api/webhook/traccar</entry>
<entry key='forward.header'>x-webhook-secret: YOUR_SECRET</entry>

Set the same value as TRACCAR_WEBHOOK_SECRET on the Routly side and that is the integration. Traccar does not sign its forwarded payloads, so a shared secret in a header is the mechanism available; keep it long and keep the endpoint on TLS.

One detail worth knowing, because getting it wrong fails quietly: Traccar reports speed in knots and distance in metres. Routly has a dedicated Traccar provider that converts on ingest, so a stock Traccar works unmodified. If you instead point Traccar at the generic HTTP endpoint, you have to define computed attributes inside Traccar first — and the usual symptom of getting that wrong is speed silently arriving as null on every position.

There are three ingest paths in total: traccar, flespi, and a generic one that accepts any JSON a gateway can POST. Positions land in a ClickHouse you run; vehicles, trips and users in a Postgres you run. Nothing is sent to us.

What is different about the licence

Traccar is Apache-2.0, which places no obligation on you at all. Routly is AGPL-3.0, which is stricter in one specific way: modify it and offer it to others over a network, and you publish those modifications under the same licence. Running it privately and unmodified triggers nothing.

That distinction matters most if you resell. Offering a modified Routly to customers over a network is exactly the case AGPL Section 13 covers, and the integration work you consider your advantage would have to be published. There is a commercial licence that removes the obligation. Worth knowing before you start rather than after.

Frequently asked

Does Routly replace Traccar?

No. It has no device protocol decoders. It reads decoded positions from Traccar, Flespi, or any gateway that can POST JSON.

Can I migrate my Traccar history into Routly?

Positions can be replayed into the ingest endpoint, but the more useful answer is usually no: derived data — trips, fuel events, scores — is computed at ingest, so a backfill recomputes it anyway. Most people run both in parallel and let the new history accumulate while the old one stays queryable in Traccar.

My Traccar is slowing down — is that what this fixes?

Partly, but that is a different question with its own answer: running Traccar past a thousand devices covers the tuning that helps and the point at which splitting ingest from the application layer is the real fix. This page is about the features above it, not the load beneath it.

Do I need ClickHouse?

For a production deployment, yes; it is what makes a long position history cheap. On a measured production instance a position costs about 19 bytes on disk after compression, at a ratio of 2.9×.

Will my trackers need reconfiguring?

No. They keep reporting to Traccar exactly as they do now. The forwarder is the only thing that changes, and it is a configuration entry.

Is Routly open source in the same sense?

It is AGPL-3.0, which is an OSI-approved licence, but the two are not equivalent in practice: Apache-2.0 asks nothing of you, AGPL asks for your modifications back if you serve them to others over a network.

Check it against your own devices

The demo shows the interface with no account required. If you already have Traccar running, the fastest real test is to point its forwarder at a Routly instance and watch the same vehicles appear in both — which is also how a migration goes: both systems in parallel until the data matches, then you decide.

Talk to us

Tell us what you are running now

Tell us what you run today and how many vehicles are on it — whether that is one fleet or thirty customers’ worth. We answer within one working day.

Or look around first — the demo needs nothing from you. Open it.

Across every fleet you run, if you run more than one. The total decides what the infrastructure costs you to run, which is the first thing we will tell you.

We answer within one working day.