Car logos for fleet management and mobility platforms

A fleet is a mixed list of makes, cars and vans together, shown in tables, driver apps, client portals, and monthly reports. Put the right mark on every row from one URL pattern, in the variant each surface needs, and take the logo set out of every client onboarding.

See what it saves
fleet.northbank.example/vehicles

Vehicles

Northbank Logistics · 12 vehicles · 12 makes · 6 sites

Logo column
MakeRegistrationModelDriverSiteMileageStatusContract end
VolkswagenLT24 KHVID. Buzz CargoR. OkaforLeeds18,420On road2027-03
FordLT23 PRDTransit CustomA. WhitmoreLeeds41,880Service due2026-11
TeslaKX24 EFAModel 3S. BhattManchester22,105On road2027-06
Mercedes-BenzKX23 DRMeVitoPoolManchester33,710In workshop2026-09
KiaYN24 AZQNiro EVJ. LindqvistSheffield9,640On road2027-08
ToyotaYN23 TGBCorolla CommercialD. AdeyemiSheffield52,360On road2026-10
MaxusBV24 HLEeDeliver 7PoolBirmingham12,980On road2027-05
VauxhallBV22 NRCVivaro-eM. PetrovaBirmingham61,240Off hire2026-08
AudiLD24 CUXQ4 e-tronH. NakamuraLondon14,300On road2027-04
PeugeotLD23 QWMe-ExpertPoolLondon37,890Service due2026-12
VolvoGL24 RTYEX30C. FerreiraGlasgow8,120On road2027-09
IvecoGL23 MBXeDaily 35SPoolGlasgow27,650On road2027-01
GET https://motomarks.io/img/volkswagen?type=wordmark&size=xs&aspect=heightaspect=height keeps every row on one baseline
A fleet manager's vehicle list. Every mark is a live CDN request; switch the logo column between a 16px wordmark with aspect=height and a 16px badge to see why tables use the wordmark. Filter by status to see the marks hold their baseline.

What it changes for a fleet platform

A fleet platform's costs scale with clients, vehicles, and surfaces. Logo work is one of the few that does not have to. Four costs that stop growing, and what each one replaces.
Client portals that launch without an asset step
A fleet lessor or fleet management platform onboards a client with a mixed fleet of thirty makes. When each make is a slug and each mark is a URL, the client's portal shows the right logos on day one; nobody assembles a set for them.
Replaces a logo set per client portal
Tables a fleet manager can scan
Five hundred vehicles, a dozen makes, sixteen pixels of row height. A wordmark with aspect=height sits on the same baseline in every row, which is the difference between a table that scans by make and one that does not.
Replaces hand-trimmed marks that never lined up
Reports and driver apps that agree with the portal
The monthly utilisation PDF, the driver's mobile app, and the fleet manager's dashboard all reference the same slug. The mark is identical in all three, and a rebrand reaches all three through the cache without a release.
Replaces an update pass across dashboard, app, and report
Vans and trucks covered with the cars
Fleets are not all cars. Light commercial marks such as Iveco, Maxus, and MAN sit in the same library and the same URL pattern as Ford and Mercedes-Benz, so a mixed fleet does not need a second image source.
Replaces a separate LCV logo set

How Leaselab took 100 brands off the operations budget

Leaselab manages leased vehicles across multiple platforms with more than 100 brands to keep current, including the dense tables and reports a fleet product lives in. This is what their CTO said changed.
Company
Leaselab
Footprint
Multiple platforms
Library
More than 100 automotive brands
Before Motomarks
An extensive operational cost

What the team stopped doing

  1. 01

    Hours chasing updated brand assets

    The asset behind the URL is updated; the URL does not change

  2. 02

    Resizing logos by hand for each placement

    size= and type= are query parameters

  3. 03

    Applying one change across various systems

    Every platform reads the same URL, so one update reaches all of them

A fleet table is the hardest surface for logos: a hundred rows, a dozen makes, sixteen pixels high. Wordmarks with aspect=height line up in a table column in a way cropped PNGs never did. One URL parameter replaced a pile of hand-trimmed files.
AC
Adrian Ciaschetti
CTO, Leaselab

Where the mark goes on a fleet platform

Six placements from a 16px table row to a remarketing listing. Each row is the literal query string that surface sends.
Fleet table
A 16px wordmark per row with aspect=height, so a dense list scans by make.
type=wordmark&size=xs&aspect=height
Vehicle detail and driver card
A 32px badge beside registration, model, and driver.
type=badge&size=sm
Driver mobile app
The badge on My vehicle and in the mileage and damage reporting flows.
type=badge&size=sm
Client portal header
The makes on a client's fleet as a strip, sized for a header.
type=badge&size=xs
Utilisation and cost reports
PNG for the PDF renderer, same slug and size scale.
type=wordmark&size=sm&aspect=height&format=png
Remarketing and de-fleet listings
The badge on end-of-contract vehicles offered to trade buyers.
type=badge&size=sm

What a mixed-fleet logo set costs to keep by hand

The defaults describe a platform with fifty makes, cars and vans, across a web dashboard, a driver app, and a report template. Every rebrand and every new make lands on each of them. Put in your own numbers and compare with a plan.

Leaselab maintains more than 100

Web dashboard, driver app, report template

Rebrands, new brands, corrections

Source, resize, convert, commit, deploy, check

Find, trim, export sizes and formats, once

Salary, benefits, and overhead per hour

Motomarks plan to compare

Your numbers; change any input. First year = brands × minutes per brand + changes × codebases × hours per change. Each year after drops the one-time build. The model counts engineering time only; it leaves out CDN hosting, storage, and the cost of shipping an out-of-date mark.

Coverage for mixed fleets

Company car makes, light commercial vehicles, and the European fleet market, all in one library. Each tile links to the brand's logo page; the browse page has the full index.

Integration in four steps

Slug mapping once, wordmark for tables and badge for cards, PNG in the report, and usage attributed per client and app. The examples use TypeScript; the URLs are the same in any stack.
aspect=height is the whole trick for tables. Every wordmark sits on the same baseline at 16 pixels.
AC
Adrian Ciaschetti
CTO, Leaselab
  1. 01

    Map fleet data to brand slugs once

    Fleet records arrive from lessors, telematics, and DVLA-style lookups with make spelled several ways. Pull the published list from the JSON API daily, match on name, and store the slug beside each vehicle. Keep a small override map for the spellings that do not match.

    jobs/sync-brand-slugs.ts
    const res = await fetch("https://api.motomarks.io/brands", {
      headers: { Authorization: `Bearer ${process.env.MOTOMARKS_SECRET_KEY}` },
    });
    const brands: { id: string; name: string }[] = await res.json();
    const slugByName = new Map(brands.map((b) => [b.name.toLowerCase(), b.id]));
    
    const OVERRIDES: Record<string, string> = {
      "mercedes": "mercedes-benz",
      "vw": "volkswagen",
      "iveco s.p.a.": "iveco",
    };
    
    export const toSlug = (make: string) =>
      OVERRIDES[make.toLowerCase()] ?? slugByName.get(make.toLowerCase()) ?? null;
  2. 02

    Use the wordmark in tables and the badge everywhere else

    aspect=height returns a wordmark whose height is the constraint, so every row in a table shares a baseline regardless of how wide the mark is. Cards and headers use the square badge.

    components/make-mark.tsx
    const KEY = process.env.NEXT_PUBLIC_MOTOMARKS_KEY!;
    
    export function MakeMark({ slug, name, variant }: { slug: string; name: string; variant: "table" | "card" }) {
      if (variant === "table") {
        return (
          <img
            src={`https://motomarks.io/img/${slug}?type=wordmark&size=xs&aspect=height&token=${KEY}`}
            alt={name}
            height={16}
            style={{ height: 16, width: "auto" }}
            loading="lazy"
          />
        );
      }
      return <img src={`https://motomarks.io/img/${slug}?type=badge&size=sm&token=${KEY}`} alt={`${name} badge`} width={32} height={32} loading="lazy" />;
    }
  3. 03

    Render the same mark in the report

    PDF renderers do not decode WebP. Request format=png in the report template with the same slug and aspect, and the mark in the PDF matches the one in the portal.

    reports/utilisation.html
    <td class="make">
      <img
        src="https://motomarks.io/img/{{ vehicle.make_slug }}?type=wordmark&size=sm&aspect=height&format=png&token=pk_YOUR_PUBLISHABLE_KEY"
        alt="{{ vehicle.make }}"
        height="14"
      />
    </td>
  4. 04

    Attribute usage per client and per app

    Browser requests are attributed by Referer, so client portals on separate hostnames show up separately in the usage dashboard. Server-side and mobile requests carry none, so name the product with the optional header.

    Optional request header
    GET https://api.motomarks.io/brands/iveco
    Authorization: Bearer sk_live_...
    X-Motomarks-Referer: driver-app.northbank.example

Questions before you integrate

Our fleet includes vans and trucks. Are those makes published?

Light commercial marks such as Ford, Mercedes-Benz, Volkswagen, Renault, Peugeot, Citroën, Vauxhall, Fiat, Toyota, Nissan, Maxus, Iveco, MAN, Isuzu, and LDV are published. Check the browse index for a specific brand and request any that are missing from the submit page.

Why a wordmark in the table rather than a badge?

A badge is square and reads well at 32px and above. At 16px in a dense row a wordmark is more legible, and aspect=height keeps every wordmark on the same baseline regardless of its width. Use the badge on cards, headers, and the driver app.

We white-label the platform for several lessors. Do we need a key per lessor?

One publishable key can serve every tenant, and the usage dashboard attributes browser traffic by hostname. Create a key per tenant if you want to roll one without touching the others; on Pro and Enterprise each key can carry its own hostname allowlist, including wildcards.

How does a manufacturer rebrand reach a dashboard, a mobile app, and a PDF report?

The asset behind the URL is updated and the URL stays the same. Browsers and intermediate caches hold the previous image for up to 24 hours. The mobile app and the report renderer fetch the same URL, so all three pick up the change without a release. The change is listed in the public changelog.

What does this save a fleet platform?

Pro is $588 a year billed monthly and covers 100,000 requests a day with per-key domain restrictions. A platform with forty client portals, a driver app, and a report template maintaining fifty makes has one image set feeding hundreds of placements; one rebrand applied by hand is a change, a test, and a release in each. Leaselab described maintaining more than 100 brands across multiple platforms as an extensive operational cost. The cost model on this page uses your numbers.

Every row,
the right mark.

Create a free key, map your fleet data to slugs once, and every table, app, and report renders the mark from one URL.

Read the Image CDN docs

Free includes 1,000 requests per day with an attribution link. Startup and Pro remove attribution.