Both conversions start from the same DWG file, but they serve completely different purposes. An image is for display. JSON is for processing. Knowing which output you need — and when you need both — determines what kind of tool your product should call.
DWG to image renders the drawing geometry onto a raster canvas and saves the result as a PNG, JPEG, or TIFF. The output is a flat grid of colored pixels. It is useful for displaying a thumbnail, embedding a preview in a PDF report, or giving a non-CAD user a visual reference. It is not useful for any downstream software processing.
DWG to JSON reads the binary DWG format and emits a structured description of every entity in the drawing: its type, coordinates in native drawing units, layer membership, color, and bounding box. The output is machine-readable data your code can query, filter, measure, and transform.
| Capability | DWG to Image | DWG to JSON (CADLens) |
|---|---|---|
| Output format | PNG / JPEG / TIFF | JSON (sheets[].entities, sheets[].layers, file, summary) |
| Drawing units preserved | No — pixels only | Yes — native units per entity |
| Measurements | Not recoverable | Available on every entity |
| Layer information | Lost on render | sheets[].layers: name, colorHex, entityCount |
| Entity filtering | Not possible | Filter by layer, type, color in code |
| Automation | Display only | Full — parse, measure, classify, export |
| Search / indexing | Not possible | Index entity text, count by layer, etc. |
| Preview image | Yes | Yes — imageUrl returned alongside JSON |
An image conversion is a one-way street. The moment the DWG is rendered to pixels, the structural information in the file is gone:
The CADLens sheets[].entities opens up a category of features that are simply not possible from an image:
The metadata object adds drawing-level context: units (millimetres, inches, etc.) and the overall bounding box ({ width, height }) so downstream code knows the coordinate space.
CADLens is a parser, but it also renders a PNG from the same parse run. You do not have to choose. A single POST /v1/parse call returns a job_id. When the job reaches COMPLETED, the result from GET /v1/jobs/{job_id}/result includes:
sheets[].entities — every entity with coordinates, layer, color, and bounding box, grouped per sheet.sheets[].layers — layer names, colorHex, and entityCount per sheet.file and summary — format, version, units, total entity count, and sheet count.imageUrl — a signed URL to the rendered PNG preview, ready to display.Display the PNG in your UI and process the JSON in your backend — from one API call, with no separate rendering step and no additional infrastructure.
The free plan includes 20 parse requests per month. No credit card, and keys are issued as soon as you sign in.