Label CT and MRI in 3D. Every mark keeps its author.

Nitsor opens the series you already have and lets you draw on the volume itself, in the browser. Each stroke is saved as a change with your name on it, an area in square millimetres, and a fingerprint of the change before it. Draw on the published CT slice below and watch the record fill.

Register, label, commit and review at app.nitsor.com. Signing in is by invitation, so it starts with a call.

Draw a stroke. Read the commit it wrote.

This is one published CT slice, not a screenshot. The layers on the left composite live. The list on the right is the record your stroke leaves. Nothing you draw here leaves your browser.

layers, bottom to topz 192

drag to label
slice115.2 mm

reading bytes 100 671 488 to 101 195 775 of 268 443 648 · 524 288 bytes for this slice

your branch0 commits

  1. Nothing here yet. Every stroke adds one line: what you proposed, the area you added, your name and the time, and a fingerprint taken over the line above it. Change one line and every fingerprint after it stops matching.

brush 2.3 mm wide · areas measured from your own stroke at 0.33 mm per pixel0.0 mm²

real scanFraunhofer EZRT XXL-CT of a Messerschmitt Me 163 airframe, subvolume V5. doi:10.5281/zenodo.10651746, CC BY 4.0. The coloured outlines are the dataset's own published labels. Areas, instance counts and byte offsets are measured or computed from that volume. The class names and the reviewer name are ours. The model proposal layer is not a model. It is the published label grown by three pixels, standing in for one.

What you get

  • One viewer for the whole series

    CT and MRI series stay registered to each other, so a mark you make on one lines up on the others. You label the volume, not a folder of pictures.

  • Big volumes open without the wait

    The browser asks your storage for the bytes of the slice you are looking at. On this 512-slice volume that is 524 288 bytes, not the 268 million bytes of the whole file.

  • Sizes in millimetres, not pixels

    The software knows the voxel size, the size of one 3D pixel. An area comes out in square millimetres, which is a number you can put in a report.

  • An author on every mark

    A label is saved as a commit: a change with an author, a time and a parent. There is no way to save one without a name, so nobody has to reconstruct it later.

How the scan reaches the browser

StepWhat happens
Where the file sitsIn your own S3-compatible object storage. Registering a series does not copy it. Nitsor keeps an index, a hash and the scan settings.
What the browser asks forA signed link that expires, for one byte range: the slice you are on. We keep no copy of the scan.
What you draw onThe volume. Brush across slices, or grow a region from one seed. The tool can copy a drawing along the stack.
What gets savedOne commit per object, with the class, the area, the slice range, the author and the time. Nothing is overwritten.
Who checks itA second person accepts or rejects, and the rejection stays on the record with a reason and a name.

What an inspector actually does

Opens
The series you already have, read from your own storage. A 512-slice study shows the slice you asked for. You do not wait for the file.
Draws
At full resolution, on the volume rather than on a folder of pictures. Each stroke saves as one change carrying your name, the class and an area in square millimetres.
Hands over
A second person accepts or rejects, with a reason. Both names stay on the label, and a rejected mark stays visible instead of disappearing.

The areas come from your own stroke at the real pixel size of the scan, 0.33 mm here. That is a number you can put in a report without converting anything.

Bring one set of scans. Leave with a record.

Thirty minutes on your own scans, on our hosted instance, no slides. If we are not a fit, we say so on the call.