Livery tool (Vehicle UV Mapper)

Updated Oct 15, 2026 Open the tool

The livery tool at /app/uv ("Vehicle UV Mapper") takes a FiveM or GTA V vehicle model, generates a livery UV layout for the meshes the user picks, and exports a fixed .yft plus a UV template sheet to paint on. Since 2026-09-11 the same engine also runs inside the workspace as the UV map tool at /app/uv, where the Designer sends any vehicle it finds no livery surface on and the Vehicle tool sends a vehicle it just edited (its Add livery button; the note reads <name> has its lightbar · pick the panels a livery should cover, then generate, since 2026-09-27; since 2026-09-30 notes and "downloaded" lines appear for a few seconds in the activity pill at the top of the screen, not as a card over the car, and stay in its list); the workspace doc (workspace.md, section UV map) describes that surface and the refactor notes. Since 2026-10-02 every UV map download (the YFT and its _hi, the meta files, the livery YTD, the paint sheet; Download everything as one) is kept in the car's project in the library as its next version with what it wrote, and the library copy the car came from is no longer written over; the Designer's exports of the same car land in the same project (workspace.md, "Exporting is keeping: Vehicle, UV map and the Designer"). Both routes stay up until the engine is replaced. A separate Roblox ER:LC Livery Studio at /app/erlc covers Roblox liveries. In /app, ER:LC slots, outfit garments and their AI results open their ⋯ menu on right-click too (since 2026-09-22).

How the livery tool works

The Vehicle UV Mapper at /app/uv ("Generate optimized UV layouts for GTA V vehicles", marked "Early Access") fixes vehicles that have no livery UVs or bad ones. The user drops in a .yft or a CodeWalker .yft.xml; any other file gives "Invalid file type. Upload a .yft or .yft.xml file." A binary .yft is converted to XML on the server first ("Converting YFT...", then "YFT loaded", or "Could not load this YFT. Please try again."). Until a file is loaded the panel says "Upload a model to begin". The model appears in a 3D view (left mouse rotates, right mouse pans, scroll zooms). Under "Selected Meshes" the prompt "Click a mesh in the 3D view to select it" asks the user to click the body panels that should carry the livery; vertex and chart counts update as meshes are added. Generating produces "Generating UVs..." then "UVs generated successfully!" and switches to a 2D layout view where each chart can be adjusted: drag to move, scroll to scale, Alt+Scroll to rotate, arrow keys to nudge, R to rotate 90 degrees and F to flip, after which "Layout updated!" confirms the change. Generating the layout does not spend credits.

Exports: YFT, XML and UV template

The livery tool exports three things once a layout exists. The main export builds a new binary vehicle: pending edits are applied ("Applying UV changes..."), the XML is serialised and converted back on the server ("Building YFT...") and the browser downloads <name>.yft ("YFT download started"; on failure "Could not build the YFT. Please try again."). A secondary export downloads the edited CodeWalker XML as <name>.yft.xml ("XML download started"). The "UV Template Sheet" panel ("A color-coded UV wireframe to use as a painting guide.") renders a PNG at a chosen Resolution of 1024 x 1024, 2048 x 2048 or 4096 x 4096 (default 4096) through Download UV Sheet (.png), saved as uv_template_<res>x<res>.png. The "Texture Setup" panel explains what the game now expects: "The model now looks for a texture named:" zoovdev_sign_1 (click to copy). The livery texture goes in the vehicle's .ytd; extra liveries use suffixes like _2, _3. The "Car Variations" panel shows the carvariations.meta snippet the vehicle needs: <flags value="1" /> and a <liveries> list with one <Item value="true" /> per livery. Painting the sheet itself is done in the texture editor or the Photoshop plugin, not on this page.

Free limit and plan rules for livery generation

Livery UV generation is limited by count, not credits (checked 2026-09-24 against src/lib/config/plans.ts: the Packs build limits added there, PACK_LIMITS.items, perSlot and variations, do not touch liveries). In /app/uv the left column shows a dashed box where the vehicle will sit until one is open (press it or drop the YFT on it, since 2026-09-28). Free accounts get 1 UV generation per day; Standard, Pro and Max (and the Referrer role) have no limit. Since 2026-09-27 the day ends at midnight UTC (a rolling 24 hours before), the count is DAY_LIMITS.uv in ws_allowance_uses (the workspace's allowance ledger, kind uv), and the conversion box counts the same press again when it writes the vehicle, so a call that skipped the page is counted too. Guests must sign in first (the workspace asks before any tool is touched): "Sign in to generate your free livery UV map." The sidebar shows "1 UV generation available." before use and "Generation used. Standard+ includes unlimited livery creation." with an Upgrade button after. Trying again returns "You have reached your daily limit of 1 free livery UV generation. Upgrade to Standard+ for unlimited livery creation." If the check cannot complete the page says "Usage limit check timed out. Please try again." or "Could not verify usage limit. Please try again." and nothing is consumed. The generation is counted when the user clicks generate, before the layout is built, so a failed generation still uses the day's allowance (verify). Converting the .yft and building the export are free and unlimited. The Free plan card lists this as "1 livery UV map a day"; the Standard card promises "Unlimited livery generation". Since 2026-10-06 the Free line under Generate ("Free · 1 a day, unlimited on Standard", "Last free map today…", "Free map for today used…") adds "used N of the last 30 days" from the second day in the last 30 the person has made a map (GET /api/v2/allowance answers days per kind), and once the map is written a card under Texture setup, Paint sultan with AI ("≈ 33 credits a run · your 50 free credits cover it", shell/NextStep.svelte), hands the written car to the Designer with Design the livery, where the AI paints the livery on this layout; the tool is left empty, as the stage's paint-it-instead door leaves it. The press is workspace_next_step_clicked (from = uv).

Roblox ER:LC Livery Studio

The ER:LC Livery Studio at /app/erlc ("Generate and edit custom ERLC vehicle liveries") is the Roblox counterpart, reached from the landing page at /roblox. The user browses the vehicle roster by department (categories and subcategories such as Law Enforcement and Fire Department), picks a vehicle and sees its livery slots. Each slot can be filled two ways: Generate with AI ("Describe the look, add reference images, and let Imagine paint the slot.") or Edit ("Fine-tune any slot in the editor with layers, text and decals."). Signing in with Discord is required to design ("Sign in with Discord to design liveries."). Finished slots download one at a time as <vehicle>-<slot>.png ("Designed slots can be downloaded individually.") ready to import into Emergency Response: Liberty County. Projects are saved in the browser per vehicle ("New project created.", "Project deleted.", "That project belongs to a different vehicle."). A 3D preview ("Your livery on the vehicle", drag to orbit) shows where a GLB model exists; "Couldn't load the 3D model." means none is available for that vehicle. The editor needs a desktop-sized window: "The livery editor needs a larger screen. Try Generate with AI here." A "Custom template" option lets users load their own slot template. Free users share the Designer's day with the FiveM Designer (20 minutes of editing a day since 2026-09-27, 30 before; the numbers for the retired legacy editor were 30 minutes without Discord and 2.5 hours with it); Standard and above edit without a timer.

ER:LC liveries in the workspace (/app/erlc)

Since 2026-09-18 the ER:LC studio also runs inside the workspace as Liveries, under Design, when the game at the top of the rail is set to Roblox (/app/erlc). The old studio address /roblox/erlc redirects there.

  • Picking a vehicle. While the catalog loads the list is ghosted in the shape of the rows themselves, and a vehicle being opened is ghosted one row per slot it has, so nothing jumps when the real rows arrive. The left panel lists every ER:LC vehicle grouped by department, Law Enforcement first, then Fire Department, Department of Transportation and Civilian Jobs, with a search. Chips narrow the list: Police, Fire, DOT and Civilian (press as many as apply), and 3D, which keeps only the vehicles with a model and carries the count of them. The caption reads "46 of 100" while anything is on, and the filters stay put while a vehicle is open so going back lands where it was. Picking one shows its slots: the body slots (Left, Right, Top, Front, Back and their numbered pieces) first, then glass and plates. Vehicles with a 3D model (38 of 100 on 2026-09-18) show it turning on the stage, wearing every slot; the others show their slots laid out flat.
  • Painting. Pressing a slot, or Paint livery, opens the Designer over the tool with all of the vehicle's slots along the bottom. The PRC template shows under the artwork as a guide and is never part of the download. Layers, text, shapes, images, effects and undo work as in the Designer. Done keeps the work; Cancel asks before throwing painting away.
  • Generating is beta, and says so. The panel carries a Beta chip and, above everything, what the AI gets wrong: a graphic can land on the wrong side or the wrong way up, and sides rarely match exactly. The advice is to check the vehicle and fix it in the Designer.
  • Generating. The right panel generates in two ways. Vehicle puts the chosen body slots on one AI image, each at its real proportions, so one design runs across every side and costs one image. A vehicle starts with its sides and roof picked: Left 1 and 2, Right 1 and 2, and Top 1 (where a side has no panel 1, its lowest number). Front and Back are one press away: since 2026-09-29 they are left off the first sheet, because the sides carry the lettering and leaving the ends off gives each side about 60% more of the image (across the 68 police and fire vehicles, the Left 1 panel's median share went from 1.08 to 1.76 megapixels). When pressed, a Front or Back is drawn at the vehicle's real size rather than its template's (on many vehicles the Front template is as long as a whole side). Press any other body slot to add it to the sheet, or a picked one to take it off. Before 2026-09-28 every body slot started picked, up to 27 on the Redline ladder trucks, which drew each one small. Slot generates one slot on its own for more detail; glass and plates are generated this way. The panel shows how the slots sit on the image and the price before Generate is pressed. When the balance is below the price, the button is Get N credits (opens the plans) instead of Generate. Since 2026-10-02 that balance is the top bar's, which refreshes after every run. Before that the panel read a copy of the balance taken when the page loaded and never updated inside /app. A Free user who spent part of the 50 signup credits kept seeing Generate and was refused with "Insufficient credits." (685 refusals from 325 people in the week to 2026-10-02, up to 22 from one person). References follow the plan: 1 picture on Free, Lite and Booster (Lite and Booster had 2 until 2026-09-30), 4 on Standard and above; on the smaller plans a locked Up to 4 tile with a Standard badge sits beside the slots and opens the plans (before 2026-09-29 four slots showed on every plan and a Free run with two pictures was refused). The vehicle sheet itself is never counted as a reference. Lettering asked for in the prompt is painted (since 2026-09-29; an instruction against visible text used to leave it out), and words in quotes, like "SHERIFF" or "12", are passed to the model to paint letter for letter. When a generation finishes, a Livery ready dialog opens by itself with every slot it made shown on its template. Apply puts them on the vehicle (the 3D preview and the slot list update at once), Apply and paint does that and opens the Designer on them, and Discard throws the result away. A generated slot lands as a layer over anything already painted, which the dialog says, and can be moved, edited or deleted in the Designer. Closing the dialog keeps the result in the panel's Results, where pressing it opens the dialog again and Apply still works.
  • Copy the photo (since 2026-10-14). A reference picture is a brief on its own: with one in the row, the description may stay empty (its placeholder reads "Copy the photo · add changes here") and Generate runs; words typed there add to the picture or change it, and where the two disagree the words win. As soon as the first picture lands in the row the tool reads it (a few seconds, nothing charged) and shows Read from the photo under the pictures: which side of the vehicle it shows (Left side, Right side or Side unclear), how many graphics it found and the words on it in quotes, with Show what it read listing the base colour and every graphic in plain sentences. The read is what the AI is told to paint, word for word, so a wrong read is worth fixing in the description (or with a clearer photo) before spending credits. Which side the picture shows is worked out from where the car's nose points, never guessed, because a wrong side swaps the design back to front (measured 3 runs in 3). When the photo is square on to a flank, "Laid over Left 1 as a faint guide" says the car has been cut out of the photo and ghosted over that panel so stripes and words land where they belong; since 2026-10-15 the other flank's panel carries the same car flipped with its lettering cut out, so stripes and emblems sit right on both sides and no letters are copied backwards (measured 2026-10-15 on two photos, four runs: word and badge in the right order on both sides every time, where the words alone got Queensland wrong on both sides twice); a three-quarter photo gets no ghost. Every picture in the row is read (later on 2026-10-14): the first leads (its side, the ghost), and each other one is listed as "Picture 2 shows a three-quarter view of the vehicle's RIGHT side and its FRONT: …" so a front or back view adds what a side view cannot; the box then reads "Read from 2 photos" and Show what it read groups the graphics by photo ("Photo 2 · Right side · front"). Where no picture shows the roof, the front or the back, the AI is told to carry the side bands round with the main word and add nothing else. Each graphic on a side also carries where it sits along the car ("from about 40% to 60% of the way from the nose to the tail", later on 2026-10-14, after a word landed a door too far back): the read measures it left to right in the picture and the tool turns it round by where the nose points, and the prompt says how such a span lands on a panel whose front is to the left or to the right, and to err toward the nose. The start sheet is still Left 1, Right 1 and Top 1: press Front 1 and Back 1 to have those painted too. "Couldn't read the photo · the AI still sees it" means the read failed and the run goes on the picture alone, as before. Also since 2026-10-14 the AI no longer invents a unit number on the roof: one is painted only when the description or the photo carries a number (before, every roof got a made-up number).
  • Kept in your library (since 2026-10-02). Each livery is a project in the library, one per car, named for the car. Every Download keeps the slot images it saved as the project's next version, and every AI livery generated for the car is kept there too. Click the project in the library to see the car in 3D wearing that version (cars without a 3D model show the slots flat), with every version listed beside it; Open in Liveries opens the car with that version's slots on it, on any computer. When the browser you open it on already has a livery painted on that car, that one is kept and nothing is put over it.
  • Downloading. Download saves a ZIP with one PNG per painted or generated slot, named the way PRC names the slot (Left 1.png) in a folder named for the vehicle. Each PNG keeps the template's shape with its long side at 1024 (what Roblox's website upload keeps) or 2048 (for Studio uploads now that Roblox serves textures up to 4K). Only the artwork is in the PNG; the template is not.
  • Saving. Work is saved on this device per vehicle and comes back when the vehicle is opened again, including generated slots not yet opened in the Designer.

The pictures in the list. Every vehicle has one, and it is the vehicle, not a plate. Where a rip exists (38) the picture is a render of it, front three-quarters, wearing its templates. For the rest (62) it is the side template with PRC's studio plate, its watermark and its cyan lifted off. Both are made by scripts/erlc-render-model-thumbnails.ts and stored at _thumbs/<vehicle slug>.webp in the models bucket, which the catalog prefers over the old template thumbnail. A row draws it at 56 by 96 on a dark ground in both themes, because a PRC vehicle is a white body and the light theme's own thumbnail ground is near-white.

Why a slot image's size does not matter, only its shape. Each ER:LC slot is a flat projection of one side of the vehicle, and the game stretches whatever image it is given over that side. So any resolution works as long as the width-to-height ratio matches the template. The old studio squeezed each slot into one of five AI shapes and then guessed where the art landed; that is why its results came back stretched or shifted. The workspace tool draws each slot into an exact rectangle on the AI image and cuts that same rectangle back out, so nothing is guessed.

Opened from Home (since 2026-10-09). When the Home guide sends someone to Liveries (or to Roblox Clothing), their description is waiting in Generate's prompt (?prompt= in the address); they still pick the vehicle first. Words already typed are left as they are, and nothing is spent until Generate is pressed.

Roblox pricing and AI livery credits

Roblox plans are the same subscriptions as FiveM, presented on /app?game=roblox&plans=all ("Plans for Roblox livery creators"). Free: "1 livery UV generation / day", "AI livery generation (credit cost)", "In-browser livery editor (daily time limit)", "ER:LC vehicle template library" and "Community support". Standard ($15 a month, $160 a year): 500 monthly credits, unlimited livery generation, unlimited editing time, discounted credit services, project saving, and "Includes Standard FiveM access". Pro ($25 a month, $240 a year): 1,000 monthly credits, priority image generation, clothing generation, priority job queue, priority support and early access, "Includes Pro FiveM access". Max ($149 a month, $1,500 a year): 8,000 monthly credits, highest queue priority, bulk livery workflows, API access, "Includes Max FiveM access". AI livery generation ("Generate with AI") spends credits per image at the quality chosen (Draft, Standard or High): a Standard quality image costs 25 credits on Free and Plugin Pass, 15 on Standard and 12 on Pro and Max; High costs 70 on Free and Plugin Pass, 50 on Standard and 40 on Pro and Max (Plugin Pass paid 20 and 60 until 2026-09-30, when it and Booster moved to Free's prices). Image to Patch costs 50 credits on Free and 40 on Standard and above; Text to Patch costs 25 on Free and 20 on Standard and above. The form shows "Estimate: N credits" before running and "Not enough credits" with "This generation costs N credits; your balance is M." when short. The studio shows the balance under "Credits" with a Top up button and warns "Low on credits" under 20. "HD Livery Exports" is listed for Standard and above on the comparison table; what changes for Free exports is not documented here (verify).

When an AI livery fails in the workspace (/app/erlc), the message ends in a six-letter code such as "Code K7Q2XD" (2026-09-24). Quote it to support; staff find the full error from it. See the Workspace doc, "Error messages and error codes".

Carcols and lightbar tools

Two related vehicle tools live under /create/yft. The Lightbar Studio at /app/siren ("Carcols Sirens", "Create GTA V carcols.meta siren light sequences for FiveM vehicles.") is a sequencer: each siren light gets a 32-step pattern in colours such as Emergency Red, Emergency Blue, White and Warning Amber (purple, green, light blue and pink are also defined), with Visible, Cells and Loop controls, Invert Hidden, Show All and Clear all. It exports carcols.meta XML (Show XML, "Copied carcols.meta") and imports existing files by pasting XML (Paste XML, Import Pasted, "Choose a siren entry to import"; "No siren lights found in this carcols.meta file" if empty). The "Vehicle Simulation" panel previews the sequence on an uploaded .yft ("Please select a .yft file"); that preview needs the Standard tier or higher ("You must upgrade to use this feature."). Large vehicles can hit "Vehicle preview timed out. Try a smaller vehicle or load it again." The Lightbar Injector at /create/yft/lightbar injects a stock lightbar mesh and bones into a vehicle YFT ("Parsing XML...", "Injecting Lightbar Bones..."); its plan requirements are not documented (verify).

Common questions

How do I make a police livery for my car? Two steps in the workspace. If the vehicle has never had a livery (no livery slot, a livery never shows in game), first make its livery UV template with the UV map tool at /app/uv: drop the vehicle YFT, pick the surfaces, download the PNG template. Then paint the livery on that template in the Designer at /app/design (layers, decals, text, AI generate), or in Photoshop with the plugin, and save it as a YTD. If the car already takes liveries, skip straight to the Designer.

After the UV map tool my car's paint flickers through other textures in game. The model the tool writes reads its livery from a texture named as the tool showed (<vehicle>_sign_1 unless changed). Until that texture is in the vehicle's .ytd, the paint reads a texture that does not exist and the game draws whatever it had loaded last, so the paint keeps switching textures. Add the livery to the .ytd under exactly that name. A car that should not carry a livery should keep the .yft from before the tool. The Vehicle tool says so on any car it opens like this (Paint reads <name> · add it to <vehicle>.ytd or the paint flickers).

Why does my livery not show in game after using the tool? The exported model looks for a texture named zoovdev_sign_1 inside the vehicle's .ytd, and carvariations.meta must have <flags value="1" /> plus a <liveries> item set to true for each livery. The UV map tool at /app/uv writes or corrects that file under the root the game reads it by, <CVehicleModelInfoVariation>: until 2026-09-30 it wrote a new file under carcols.meta's root (<CVehicleModelInfoVarGlobal>), and a file given under that root is now moved under its own (variationRoot in modes/uv/meta.ts, shared with the Vehicle tool). Both are shown in the tool's side panel.

How many UV maps can I make for free? One per 24 hours on a Free account. Standard, Pro and Max are unlimited. Converting the file and downloading the results are always free.

Does generating a UV map cost credits? No. The count limit is the only restriction. Only AI livery generation (Roblox or FiveM) spends credits.

Which file do I upload? The vehicle's .yft (or a CodeWalker .yft.xml). Textures and .ytd files are not needed for UV generation.

What resolution should the UV sheet be? The sheet is only a painting guide, so pick the size you will paint at. 4096 x 4096 is the default; 1024 and 2048 are available.

Why are the front and back of my ER:LC livery blank? A vehicle generation paints the sides and roof first. Press Front and Back under Slots before pressing Generate to put them on the same image, or switch to Slot and generate each one on its own for more detail.

Why does my ER:LC livery leave out text or not match my prompt? Put the exact words in quotes ("POLICE", "Unit 12") and say where they go. Keep the prompt as plain as the livery: a base colour, the stripes, the words and the badge. A reference picture of the livery you want helps most. Small lettering can still blur; fix it in the Designer with a text layer.

Why can I add only one reference picture? Free, Lite and Booster carry 1 reference picture (Lite and Booster carried 2 until 2026-09-30), Standard and above 4. The vehicle template the tool sends is not counted.

How do I get my ER:LC livery into Roblox? Design each slot in /app/erlc, download the slot PNGs, then upload them to Roblox and apply them in ER:LC. The upload step happens in Roblox, not on Zoov.dev.

Is the Roblox subscription different from the FiveM one? No. It is the same plan and price; every Roblox plan also includes FiveM workspace access at the same tier.

Languages

Since 2026-09-20 this part of the site is available in English, French, German, Spanish, Portuguese, Polish and Dutch. It follows the browser's language on a first visit, and the language menu (the icon beside the profile in /app, or in the top navigation on public pages) changes it. Nothing about how it works, what it costs or what a plan includes differs by language; only the words do. File names, format names (GLB, YDR, YTD), product and model names, code, and some error lines that come from the server stay in English. Details and known gaps: Languages and translation.

The car's _hi file in the UV map tool

A GTA V car is sultan.yft plus sultan_hi.yft, the close-up model the game draws near the camera. A livery layout written into sultan.yft alone wraps wrong up close, because the old _hi is drawn there. Since 2026-09-30 the UV map tool takes both: drop them together (or add the _hi in Files, slot sultan_hi.yft, "Close-up model · gets the same layout"), and YFT and Download everything write the layout into both and download sultan.yft and sultan_hi.yft. The _hi gets the same layout piece by piece, so the livery lines up on it (within about half a pixel of a 2048 sheet on the game's sultan). Without a _hi the Files list says sultan_hi.yft not attached · the game draws its own up close, and the download menu offers sultan_hi.yft as a copy of the fixed model. A _hi dropped on its own is edited like any vehicle and downloads under its own name (before 2026-09-30 it came back named sultan.yft). The livery textures only ever live in sultan.ytd; the +hi.ytd beside some cars holds seat and glass textures and needs nothing.

Topics liveryuv mapuv mapperyftvehiclesign_1carvariationsrobloxerlccarcolssirens

Something missing? Ask on Discord