Create a free 40 Carrot account at 40-carrot.app and open the Virtual Tabletop.
How do you import a Warhammer 40K army list into a virtual tabletop?
Put the roster you already use onto a true-scale table without placing every model one at a time. The review screen shows what the import carried before anything is deployed.
TL;DR
Upload a .json, .ros, or .rosz army file for free, or use Full Access to paste a supported list export. Review unit names, counts, equipment, and any supplied profile data before confirming. If the table has a deployment zone, 40 Carrot stages the army there at true scale; otherwise it places the units in Reserves.
Which army-list path should you use?
Use a file when you have one. The free importer accepts .json, .ros, and .rosz, detects the format from both its extension and contents, and keeps the profile data carried by that file. New Recruit and BattleScribe roster files follow the same review-and-deploy path.
For text, paste a supported New Recruit, official app, ListHammer, or ListForge export through the Full Access text importer. Recognised exports provide unit names, model counts, points, and weapon names. A list does not become a published datasheet: missing characteristics fill only from an exact profile you saved in My Library.
Import the roster in four checks
Do not skip the review screen. It tells you what came from the source, what matched your saved profiles, and what still needs attention.
Open the unit menu and choose Import Army.
Upload an army file (.json, .ros, or .rosz), or use Full Access to paste a supported roster export. Text supplies unit names, counts, points, and weapon names when present; stats come only from profiles you saved.
Check the imported units and equipment, then confirm. If a deployment zone is on the table, the army is placed there automatically at true tabletop scale; otherwise it goes to Reserves.
See the army-import position before you commit
This published demo uses the same true-scale table and placement system as the app. The poster appears immediately; the interactive frame loads only as you approach it.
Keep the source and the missing data clear
Paste this into a note when you are checking an unfamiliar export. It separates what the file supplied from what your library filled.
- Source
- File type or supported export name:
- Carried
- Unit names, model counts, points, equipment, and any profiles found in the source:
- Matched
- Exact saved profiles used to fill missing stats:
- Check
- Unresolved names, attachments, equipment choices, and destination side:
What happens after you confirm?
Reserves shelves sit below the table. Imported units land inside the chosen side's drawn deployment zone with collision-safe spacing; if there is no usable zone, or the zone is full, they go to that side's shelf instead of hanging over the battlefield.
The rest of the Virtual Tabletop is ready from there: true-scale measurement, terrain, dice, objectives, wound tracking, and the saved profile details your import resolved. File import stays free; text import and Snapshots are separate Full Access conveniences.
Army file import, the core Virtual Tabletop, and manual unit building are free after sign-in.
Frequently asked questions
Does the importer handle attached leaders and characters?
Supported exports can preserve attachment labels when the list provides them. Review those labels before deployment; 40 Carrot does not infer missing attachment choices.
Do I have to import a list, or can I build one by hand?
You can build armies manually. 40 Carrot ships a built-in library of unit names, base sizes, and current official points that you can search and place directly. You enter each unit's stats yourself, and the manual unit builder covers anything custom.
Is army import free?
Army file import (.json, .ros, .rosz) is free for any signed-in account, alongside the full-size Virtual Tabletop, the manual unit builder, and the built-in unit database. Army-list text import comes with Full Access ($4/month or $33 lifetime).