Prop Converter

Updated Oct 13, 2026 Open the tool

The Prop Converter at /app/prop turns a 3D model (or an image) into a static GTA V prop (.ydr) packaged as a ready-to-drop FiveM resource. The conversion itself runs on a separate backend called WinAPI; the website prepares the model, charges credits and hands the result back.

What the Prop Converter makes

The Prop Converter page is titled "Prop Creator" with the subtitle "Turn a model into a static GTA V prop (.ydr), like furniture, signs and containers." It opens on a "How do you want to start?" screen with five tabs: "Image", "Text", "Upload", "Browse" and "Library". Once a model is chosen the shared YDR editor loads inline ("Preparing {name}…" / "Opening editor…"). A top bar lets you hop between "Prop", "Weapon", "Clothing" and "Image to 3D" modes.

A plain prop export produces a ZIP with a stream/ folder holding the .ydr and a .ytyp, plus an fxmanifest.lua. The bundled README.txt explains installation: copy the resource/{name} folder into your server's resources directory and add ensure {name} to server.cfg. Weapons and clothing use the same editor but produce different files; they are covered elsewhere.

Accepted model inputs

The Prop Converter's "Upload" tab accepts .ydr, .ydd, .glb, .gltf, .obj, .fbx, .stl, .dae and .ply (shown as "YDR · YDD · GLB · OBJ · FBX · STL +"). STL, DAE and PLY are converted on load. Dropping anything else shows "Unsupported format. Use YDR, YDD, GLB, GLTF, OBJ, FBX, STL, DAE or PLY." Importing a binary .ydr or .ydd needs a signed-in account: "You must be logged in to import binary YDR/YDD files."

The "Library" tab lists projects saved from the editor ("Models you save in the editor show up here."). They are stored in the browser, so they do not follow the user to another device. Store purchases from the YDR store open through a storeProduct link and are resolved server-side against the user's entitlements.

Textures come from the model file, from a .ytd you import ("Please choose a .ytd file", "Mapped {n} YTD textures"), or from files you attach per material. Every texture is downscaled to a maximum of 2048px on its longest side before upload, because larger textures made conversions hang.

Sketchfab search and import

The Prop Converter's "Browse" tab searches Sketchfab ("Search Sketchfab models", "Search millions of 3D models on Sketchfab"). Only downloadable models are listed and results are capped at 100,000 faces by default. Searching needs no account, but downloading does: the card says "Connect Sketchfab" and the modal "Connect Your Sketchfab Account" explains "Sketchfab requires authentication to download models. Your token is stored locally only." To get a token, open Sketchfab Settings, scroll to "API Token" and click "Show", then paste it. A bad token shows "Saved Sketchfab token is invalid".

Errors you may see: "Please log in to convert models" (not signed in to Zoov), "Connect your Sketchfab account to download models" (no token), and "Model not available in GLB format, required for conversion." The download call retries twice on Sketchfab server errors or rate limits before giving up. The browser footer shows "{cost} credits per conversion" or "Free conversions with Pro".

Image to prop

The Prop Converter's "Image" tab generates a 3D model from a PNG, JPG or WebP picture first, then loads it into the editor. Generation is a separate paid step; see the Image to 3D doc for models, polycount and refunds. When it finishes the card says "Model generated" and "Loading it into the editor is free. You already paid for generation." The "Text" tab first makes a reference image ("{n} now for the image, then {n} when you generate the model.") and then runs the same image flow. When the provider behind a model cannot run it, the generation route now refuses by name ("Imagine Pro is unavailable right now. Pick another model, or try again in a few minutes."), so it is clear that another model may still work; nothing is charged.

There is also a server-to-server path for FiveM resources using an API key with the props:create scope: POST /api/v1/fivem/props/stage-upload returns a 10 minute upload URL for a PNG or JPG ("Only PNG and JPG images are supported"), then POST /api/v1/fivem/props/from-image starts a Meshy task with propName (letters, digits and underscores, max 64), syncToken, optional scale (default 1.0, max 100) and createYtyp (default true). The server resource then polls /api/v1/fivem/props/task, triggers /api/v1/fivem/props/convert and downloads from /api/v1/fivem/props/request (signed URL valid 1 hour). Statuses are pending, converting, ready and failed. Tasks created this way are recorded with cost: 0 (verify whether that route is meant to be free). Since 2026-09-23 from-image answers a Meshy refusal with the reason in plain words ("That image was rejected by the 3D generator for content reasons. Try a different picture.") rather than "Failed to start 3D generation", and writes the run to the staff prop channel like any other generation; details in the API keys doc.

Export options

The Prop Converter's editor exposes scale, vertex colour, materials and textures; collision and YTYP are applied automatically for plain props. Scale is set with the gizmo ("Press S to switch to Scale mode") or the scale field; oversized imports are auto-scaled on load. Vertex colour has four channels labelled R (AO), G (Emissive), B (Moon) and A (Alpha), with "Output settings reset" to restore defaults.

Each material can be given a shader (default, normal, normal_spec, spec, cutout, normal_cutout, emissive) and a compression (DXT1, DXT3, DXT5, BC1, BC2, BC3, BC5, BC7 or none), with diffuse, normal and specular files. Missing diffuse textures trigger a nudge before export.

Defaults sent to the converter: LODs generated at 0.5 / 0.3 / 0.15 ratios, collision generated with up to 20,000 faces, YTYP created, LOD distance 100, HD texture distance 15, game version gen8. Plain props always include a YTYP; the export is blocked when it is turned off (verify whether a toggle is visible in the current UI). Models over 150,000 faces cannot be exported: "This model exceeds the 150,000 face export limit. Remesh it first." The built-in remesh costs 60 credits (50 on Standard, Pro and Max) and targets 1,000 to 50,000 polygons.

Steps and the size handles in the workspace (2026-09-29)

In the workspace at /app/prop, the 3D stage opens with Steps, an optional walk-through (close it with the X; Steps at the top of the stage brings it back): Model (upload, search Sketchfab, generate, your library or a sample), Size (the longest side in metres and the person for scale), Textures (skipped when the model has its own on every material) and Export (name and Convert). Show in panel highlights the matching section of the left column. Weapons and Clothing have the same card with their own steps; see the workspace guide. Under the card (and under the empty stage's buttons when Steps is closed), Edit YDR textures opens the Designer, which is where the textures of an existing YDR are changed; this tool makes a new prop from a model.

Sizing is done with the handles on the model: drag a corner to resize evenly, a face ball to stretch one way. Since 2026-09-29 the handle stays under the pointer and a prop keeps standing on the ground while it is sized (the bottom holds, the sides grow evenly about the middle). The exact number can be typed in Longest side or Scale.

Your own YDR as the size reference (2026-09-30)

In the workspace at /app/prop, the panel's Reference field reads "Person" (the 1.75 m person that stands beside the model for scale). Add YDR takes one .ydr of your own, a game prop for example, and stands it beside the model in the same metres in place of the person, on the same ground line, so a new crate can be sized against the game's crate; Replace swaps it, the X goes back to the person, and the person button on the stage toolbar shows or hides whichever it is. The file is read by the converter (sign-in needed, up to 30 MB) and drawn in the person's quiet grey; it is only a reference and never goes into the conversion. A project keeps it. A wide reference stands off by its own width so it never covers the model.

Credit cost and free plans

The Prop Converter charges the MODEL_TO_YDR feature per exported item: 40 credits on Free, Lite, Booster and Referrer, and 0 credits on Standard, Pro and Max. The server decides "free" by checking the tools.convert permission, which Referrer, Standard, Pro and Max roles hold (or, since 2026-09-22, an active Standard, Pro or Max subscription without the role), so Referrer may be charged 0 by the server while the editor shows 40 (verify which applies). Converting native game files on top adds CONVERT_GAME_FILES: 25 credits (20 on Standard, 0 on Pro and Max).

Before a paid export the "Export resource" dialog shows "{n} credits" (or "{n} models" for multi-item exports) and the note "Re-exporting this model unchanged is free for the next 24 hours, and if the conversion fails your credits are refunded automatically." Buttons are "Keep editing" and "Export · {n} credits". The Export button stays disabled while the balance is below the cost. Free re-exports and zero-cost exports skip the dialog.

How credits are authorized, deducted and refunded

The Prop Converter never charges from the browser. The editor uploads the model to WinAPI; WinAPI then calls POST /api/v1/convert/authorize with the user's session token before processing. That endpoint checks the plan, verifies the balance (a shortfall returns "Insufficient credits" with the balance and amount required) and deducts the credits with the reason model-to-ydd-conversion. The transaction is marked claimable for a 5 credit share reward.

If WinAPI fails after the deduction it calls POST /api/v1/convert/authorize/refund with the transaction id. The refund is written as a permanent credit with reason export-refund:{transaction} and is guaranteed to happen once; a duplicate call returns "Already refunded". The editor shows the error followed by "Credits refunded." Before any upload the editor pings WinAPI; if it is down the message says the conversion service is unreachable right now and nothing was charged.

The older client endpoints POST /api/v1/convert/deduct and POST /api/v1/convert/refund were removed on 2026-10-13. Nothing called them, and the old refund route could return credits for any spend. Charges and refunds for exports go only through /api/v1/convert/authorize and /api/v1/convert/authorize/refund.

Free re-export window and export history

The window ended on 2026-10-13 (the owner's call, api-security.md second pass): /convert/authorize no longer reads export_history, and validateExportFree with editor/export-validation.ts was deleted. Before that, every legacy export wrote an entry expiring after 24 hours and re-exporting the same unchanged source within it was free; nothing had written to the table since the legacy editor went on 2026-09-26, so no workspace re-export was ever free this way. The Converter's day and the paid plans' unlimited exports are what replace it.

The "Export History" panel belonged to the legacy Prop Converter editor, which was retired on 2026-09-26. Its routes (/api/v1/convert/history, /history/check and /history/upload) were removed on 2026-10-13. The workspace has no export history list.

Sharing a conversion

Sharing a conversion to Discord for credits no longer exists. The share dialog ("Shared! +10 credits earned!") belonged to the legacy Prop Converter editor, retired on 2026-09-26, and its route /api/v1/convert/share was removed on 2026-10-13. There is no share bonus now. If someone asks about the 10 credits for sharing, tell them the feature is gone.

Known limits

The Prop Converter is desktop only. Below a 768px wide viewport the workspace shows "This workspace is intended for desktop use." and "Please open this page on a larger screen for the best experience." A hardware acceleration check also runs before the 3D viewport loads.

A single conversion request is aborted after 5 minutes with a message that the conversion server did not respond within 300s and may be busy or stuck. There is no cancel button during an export; wait for the result or the timeout (verify). Multi-item exports show progress as "[1/2] Creating Resource...".

WinAPI errors map to short labels: 401 "Please Refresh", 403 "No Permission", 404 "Service Unavailable", 408 "Export Timed Out", 413 "Upload Too Large", 415 "Unsupported File Type", 422 "Processing Error", 429 "Rate Limited", 500 "Server Error", 504 "Server Timeout". Textures are capped at 2048px, models at 150,000 faces, and prop names in the server API at 64 alphanumeric characters.

Common questions

Which file types can I upload? GLB, GLTF, OBJ, FBX, STL, DAE and PLY, plus native YDR and YDD to re-edit. Native game files need you to be signed in.

How much does an export cost? 40 credits per prop on Free, Lite, Booster and Referrer plans. Standard, Pro and Max export for 0 credits. Re-exporting the same unchanged model within 24 hours is free for everyone.

The export failed. Did I lose credits? No. WinAPI asks the site to refund the deduction and the editor shows "Credits refunded." If you were never charged the error says nothing was charged.

Why do I need a Sketchfab token? Sketchfab only allows downloads through an authenticated account. Paste your token from Sketchfab Settings under "API Token". It is stored only in your browser.

Why is the page telling me to use a desktop? The editor needs a screen at least 768px wide and a GPU-accelerated browser. Phones are not supported.

The export has been stuck on "Creating Resource..." for a long time. Requests time out after 5 minutes. Try again with smaller textures (they are already capped at 2048px) or a lighter model. Models over 150,000 faces must be reduced first ("Reduce the mesh" in the workspace, free).

Can I deploy straight to my server? Yes, with Pro or Max. The workspace's Deploy dialog sends a resource to a linked FiveM server. The old route the legacy editor staged through, /api/v1/fivem/deploy-artifacts, was removed on 2026-10-13. Details are in the FiveM servers doc.

Topics propydrconverterfivemexportsketchfabcreditswinapi

Something missing? Ask on Discord