imglab: browser based labeling for dlib, with four empty headings and a lockfile with no manifest
To speedup and simplify image labeling/ annotation process with multiple supported formats.
At a glance
- What is it?
- A volunteer run HTML and jQuery tool for drawing shapes and landmark points, exporting to dlib XML, dlib pts, Pascal VOC and COCO. The feature documentation lives in docs/ rather than the README, and the root carries a package-lock.json with no package.json beside it.
- Who is it for?
- imglab fits someone labelling a few hundred images for a dlib detector who wants no install, no accounts and a small file they can email to a colleague. It does not fit a labelling team that needs multi-user assignment, review workflows, or the export format their training pipeline expects, since the format list stops at four shipped formats plus one in plan.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 47 days ago.
- What is it written in?
- Mainly HTML, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 4, 2026, and from our analysis. They are not legal advice.
Editorial analysis
Four feature headings have nothing under them
The README promises more than it prints. After the intro line about being a web based tool for labeling images for objects used to train dlib or other object detectors, there is a row of headings: Auto suggestion, Plugins, Different Shapes, Keyboard Shortcuts, and Zoom In/Out. Each one is followed immediately by the next heading or the next bullet, with no prose in between.
Everything those headings promise is deferred to two files in docs/. A complete feature list lives at docs/features.md, and the usage guide carries one anchor per heading: importing images, auto-suggestions, plugins, creating shapes, keyboard shortcuts, zooming in and out, plus an offline installation section. So the README functions as a table of contents whose pages are not in the README.
The plugin anchor names its subject in parentheses as Face++, and a faceppSampleResponse.json file sits in the repository root, which reads as captured plugin output rather than application code. If you are evaluating whether face support works, that sample is the only face-related artifact named outside the docs.
There is also a demo video linked from the README and a User Guide at the same docs path, so the tutorial material exists; it just is not in the file most people read first.
Landmark order is set by dragging labels, which is a dlib shaped decision
The one design choice the README does explain is ordering, and it is explained because dlib cares about it. The project calls out special attention for dlib users, noting you can easily adjust the order of parts, landmarks or featurepoints.
The mechanism is worth spelling out because it is unusual. Instead of requiring you to create points in the intended order, the interface lets you arrange landmark points in a specific order by dragging their label up and down in a list. Creation order and semantic order become independent, which is what makes retrofitting a corrected point set onto an existing annotation practical rather than tedious.
The rest of the quality-of-life list follows the same pattern of small affordances: drag or resize any annotation shape, select and delete any shape or landmark point, switch quickly between images, tools and labelling data through hotkeys, set image opacity so shapes and points stand out against the photo, and use tracking lines with mouse coordinates for precision work.
Two of those have consequences outside the editor. Autosave runs in browser cache, and export is what writes to disk, so the browser is holding your only copy until you export.
Four shipped formats, one in plan, and no YOLO
Export is where a labeling tool is judged, and the list is short. Multiple formats are supported: dlib XML, dlib pts, Pascal VOC, COCO, and Tensorflow, which is marked in plan. There is no YOLO entry anywhere in that list, which matters for anyone whose detector pipeline reads YOLO text files.
The project file format is separate from the export formats. Annotations are saved in the Nimn data format, written in Devanagari in the README with a link to nimn.in, and the emphasis is on the file being small enough to send over mail. That is an old-school virtue and a real one: a project file that fits in an email attachment can be reviewed by a colleague without a server.
Storage is layered the same way. Autosave writes to browser cache and export writes to disk, so a cleared cache loses unsaved work. A privacy-policy.html file sits in the repository root alongside index.html, which is a sensible pairing for a tool that keeps data in the browser by default.
Shapes are limited to circles, rectangles and polygons. Ellipses, lines and curves are described as future additions if there is demand, so anyone annotating elongated objects is working around that today.
The root carries a lockfile with no package.json
The declared stack is jQuery, Bootstrap, Riot.js as a component based UI library, and SVG.js for the drawing layer. The primary language of the repository is HTML, and the tree matches that: index.html at the root, then css/, js/, img/, tags/, fonts/, imglab-fonts/, docs/ and a dataformaters/ directory.
Three things in that listing are worth a second look. There is a package-lock.json at the root with no package.json beside it, so the JavaScript dependency set is pinned by a lockfile without a manifest declaring what is being pinned, which is not a shape a build can consume. There are two font directories, fonts/ and imglab-fonts/, where one would do. And the directory named dataformaters/ carries a misspelling that every path reference has to keep matching.
Two loose files sit alongside them. vision.md is a plain Markdown file at the root with no section in the README pointing to it, and privacy-policy.html is the only other top-level page besides index.html.
None of this is breakage on its own. For a tool that runs from a browser with no build step, the absence of a manifest is consistent with the design, and the lockfile is more likely leftover than intent.
Two domains and five ways to donate
The project answers to two different web addresses. The README title links to imglab.ml, and the repository homepage field points at solothought.com/imglab/, a personal domain rather than an organizational one. For a tool people bookmark, that split is worth knowing before you hardcode either URL in a script or an internal wiki.
Funding links are more numerous than feature lists. The header carries a First Timers Only link, a Bountysource team page, and four donation platforms: OpenCollective, Patreon, PayPal and Liberapay. Five separate destinations for a volunteer tool is either healthy reach or diffusion, and the README does not rank them.
The project's own statement of what it is runs one line: open source and free forever. The tool is MIT licensed with a LICENSE file at the root, and it asks for two kinds of contribution instead. One is data: if you build an open database of images that helps other users, raise an issue or a pull request. The other is code, under a heading that reads Looking for inters/contributors.
The same README also promotes three sibling projects by the same author, covering mock web servers, a Node router and end-to-end test tooling, all described as free to use and open to contributors.
The contributing section links to a first-timers guide
There is a mismatch in how the project onboards contributors. A CONTRIBUTING.md file exists at the repository root, and the README's Contributing section does not link to it. What it links to is .github/First_Time_Contributors.md, which is a guide for newcomers rather than the general contribution process the section promises, followed by a mention of a code of conduct and the pull request process inside that same file.
So a first-time contributor following the README lands on the document written for people who have never contributed to anything, and never reaches the contributing guide sitting one directory up. It is a small thing, and the kind of thing that costs a project one extra contributor.
The maintenance status is stated more directly. A note at the top of the README says the project needs maintainers, and asks anyone who wants to be a maintainer or collaborator to get in touch, with one condition: being polite to any user feedback. A second note says the legacy version of imglab was removed after most users switched to the new version.
In repository terms: no GitHub releases, the default branch is master, and the last commit is dated 2026-08-18.
Editorial conclusion
imglab fits someone labelling a few hundred images for a dlib detector who wants no install, no accounts and a small file they can email to a colleague. It does not fit a labelling team that needs multi-user assignment, review workflows, or the export format their training pipeline expects, since the format list stops at four shipped formats plus one in plan. Verify four things before you commit a dataset to it. Confirm your target format is actually on the list, because Tensorflow is marked in plan and no other format is named. Read docs/features.md rather than the README, because the README's own feature headings are empty and the detail is one directory away. Check the offline installation route, since browser-only use means annotations live in browser cache until you export. And plan for the project's own status: the README asks for maintainers, says the legacy version was removed after users moved to the new one, and the last commit on master is dated 2026-08-18 with no GitHub releases.
Frequently asked questions
What is imglab used for?
It labels images for training dlib or other object detectors. You draw shapes and feature points in the browser, arrange landmark order by dragging labels, and export the result. Sessions autosave into browser cache, and export is what writes to disk.
Does imglab need to be installed?
No. It runs directly from the browser, is platform independent, has no prerequisites and asks for minimal CPU and memory. An offline installation guide exists at docs/guide.md under the offline-installation section if you would rather serve the files yourself.
Which formats can imglab export?
dlib XML, dlib pts, Pascal VOC and COCO, with Tensorflow marked as in plan and no other format named. Project files use the Nimn data format and are deliberately small enough to send over mail. Shapes are limited to circles, rectangles and polygons.
What is imglab built with?
jQuery, Bootstrap, Riot.js for components and SVG.js for drawing, with HTML as the primary language of the repository. The root holds index.html, css/, js/, img/, tags/, fonts/, imglab-fonts/ and dataformaters/, plus a package-lock.json with no package.json beside it.
Is imglab still looking for contributors?
The README asks for maintainers and collaborators, with the single condition of being polite to user feedback, and notes the legacy version was removed after most users moved to the new one. The last commit on the default branch master is dated 2026-08-18 and there are no GitHub releases.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/naturalintelligence-imglab)