What a .tldr file actually is
Open one in a text editor and you’ll find JSON. Modern files (tldraw 2 onwards) are an envelope with three keys: a `tldrawFileFormatVersion`, a `schema` describing which migrations the data has been through, and a flat `records` array. Each record has a `typeName` — a document, a page, a shape, a binding between an arrow and the shape it points at, or an asset such as an embedded image.
Shapes store their position relative to whatever contains them (a page, a frame or a group), a rotation, and a `props` object with the style: colour, fill, dash, size and font are named values like "blue", "semi" and "draw" rather than raw numbers. Text is stored as rich text in recent versions, and freehand strokes are packed into compact base64 strings rather than plain point lists — which is why a viewer has to decode the file rather than just draw what it finds.
Files from the original tldraw (version 1, now at old.tldraw.com) use a different layout, with shapes grouped under each page and points stored as `[x, y]` pairs. This page reads both.
How to open a .tldr file without installing anything
Drag the file onto the drop zone above, or click Choose .tldr file. If the file has several pages, each one gets a tab. The canvas is in view mode: drag to pan, scroll or pinch to zoom, and nothing you do changes the drawing.
The other honest answer is that tldraw.com will open your file for free too — use its file menu to open it — and the VS Code extension opens .tldr files inside the editor. Those are the right choice if you want to keep editing in tldraw. This page is for the other cases: you only need to see what’s in the file, you need it as an image, or you want it in an Excalidraw-compatible format.
Converting tldraw to PNG, SVG or Excalidraw
Three exports work on whichever page is showing. PNG gives you a flat image for documents, chat and tickets. SVG stays vector, so it scales cleanly and can be restyled in a design tool. And .excalidraw writes the converted page as an Excalidraw scene you can open at excalidraw.com, in Obsidian’s Excalidraw plugin, or in OmniCanvas — fully editable, with labels still attached to their boxes and arrows still attached to the shapes they connect.
Everything is rendered on your device. There’s no queue, no watermark and no file-size upsell. A very large drawing can exceed what a browser will draw into a single image; if that happens the image export says so, and the .excalidraw download still works.
What converts exactly, and what doesn’t
Rectangles, ellipses and diamonds map one-to-one. Triangles, stars, hexagons, arrows-as-shapes, hearts and the other tldraw outlines have no Excalidraw equivalent, so they are drawn as filled outlines with the label laid over them — they look right and arrows still attach to them. Sticky notes become coloured cards, text keeps its size, alignment and colour, and freehand strokes keep their pressure when they were drawn with a pen.
Some things are approximated, and the viewer says so on the page: clouds become ellipses, elbow arrows become straight segments, highlighter strokes become translucent strokes, and cropped images appear uncropped. Embeds, bookmarks and videos show as labelled cards with their link. Images that were uploaded to tldraw’s servers rather than stored inside the file can’t be shown without fetching them from the internet, which this page deliberately never does — you’ll see a placeholder saying so. Fonts are the nearest Excalidraw match rather than tldraw’s own.
Your file stays on your device
A .tldr file is plain JSON, so there is no technical reason for a viewer to upload it — and this one doesn’t. The file is read by your browser, converted by code running in the page, and drawn locally. Nothing is sent to a server and nothing is stored after you close the tab.
The single exception is the optional Save to my canvas button. It sends the converted page to OmniCanvas so it can become a note in your account, because that is the whole point of the button. Everything else on this page works with no account at all.