Skip to main content

Bbannotate Logo

PyPI version Python versions License

A lightweight bounding box annotation tool for image datasets. Built with React/TypeScript frontend and FastAPI backend. Export to YOLO, COCO, Pascal VOC, and more.

Features

  • 🖼️ Multi-format support — PNG, JPEG, WebP, BMP
  • 📁 Project management — Organize annotations by project
  • 🏷️ Custom labels — Define your own class labels
  • 🎨 Adaptive box colors — Auto contrast, label-based, or custom color modes
  • ⌨️ Keyboard shortcuts — Fast annotation workflow
  • 📤 Multiple export formats — YOLO, COCO, Pascal VOC, CreateML, CSV
  • 🔄 Train/Val/Test split — Automatic dataset splitting for YOLO export

Installation

pip install bbannotate

Requirements

  • Python 3.12+
  • Node.js (only for frontend development)

Quick Start

# Start the annotation server
bbannotate start

# Opens http://127.0.0.1:8000 in your browser.
# By default the server runs detached, so you can close the terminal.
# Closing that browser session stops the detached server automatically.

Runtime Modes

  • Default (bbannotate start): Starts server in detached mode and links lifecycle to the opened browser session.
  • Development (bbannotate start --reload): Runs in foreground with auto-reload.
  • No Browser (bbannotate start --no-browser): Starts server without opening browser automatically.

CLI Options

bbannotate start [OPTIONS]

Options:
  -h, --host TEXT        Host to bind the server to [default: 127.0.0.1]
  -p, --port INTEGER     Port to bind the server to [default: 8000]
  --no-browser           Don't open browser automatically
  -r, --reload           Enable auto-reload for development
  -d, --data-dir PATH    Directory for storing data [default: ./data]
  --projects-dir PATH    Directory for storing projects [default: ./projects]
  --help                 Show help and exit

Other Commands

bbannotate info             # Show installation info
bbannotate status           # Show runtime status (backend/frontend processes + ports)
bbannotate build-frontend   # Build frontend assets (development)

Keyboard Shortcuts

Key Action
D Draw mode
S Select mode
Space Pan mode
← → Navigate images
1-9 Select label by index
Del / Backspace Delete annotation
⌘Z / Ctrl+Z Undo last annotation
Esc Deselect / Cancel
Enter Mark image done

Export Formats

Format Description
YOLO ZIP with train/val/test split, data.yaml, normalized coordinates
COCO COCO JSON format with categories, images, and annotations
Pascal VOC XML files per image with absolute coordinates
CreateML Apple CreateML JSON format
CSV Simple CSV with image, label, and bbox columns

Configuration

Environment Variables

Variable Description
BBANNOTATE_DATA_DIR Override default data directory
BBANNOTATE_PROJECTS_DIR Override default projects directory
BBANNOTATE_UPLOAD_RATE_LIMIT Upload rate limit (default: 1000/minute)

Development

Setup

git clone https://github.com/sebastianydemadsen/bbannotate.git
cd bbannotate
make install        # Install with dev dependencies
make frontend-install  # Install frontend dependencies

Development Commands

Command Description
make run Start full application (backend + frontend)
make backend-dev Start backend only with auto-reload
make frontend-dev Start frontend dev server
make stop Stop all servers
make test Run tests
make test-cov Run tests with coverage report
make type-check Run pyright type checking
make format Format code with ruff
make check-all Run all checks (lint, type, test)
make build Build package for distribution
make clean Remove build artifacts

Project Structure

src/               # Python package (FastAPI backend)
  api/             # API routes
  models/          # Pydantic models
  services/        # Business logic
  cli.py           # CLI entry point
frontend/          # React/TypeScript frontend
  src/
    components/    # UI components
    hooks/         # React hooks
tests/             # Python test suite

License

MIT

Metadata

Release files for bbannotate 1.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for bbannotate 1.1.0
File Interpreter ABI Platform
bbannotate-1.1.0-py3-none-any.whl Python 3 none any Details

Release files / bbannotate-1.1.0-py3-none-any.whl

Download URL bbannotate-1.1.0-py3-none-any.whl
Size 438.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
58ec041de1b358336adb1769c5a045c1fdb5008a68f66b49156786af3c2ba181
BLAKE2b-256 checksum
How to use checksums
a1eff40b14049bc9b6e80d299dc56934de1995dbcf932768a075e0a09f53a7fd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release history Release notifications | RSS feed

This release

1.1.0 This release

1 release file

1.0.9

1 release file

1.0.8

1 release file

1.0.7

1 release file

1.0.6

1 release file

1.0.5

1 release file

1.0.4

1 release file

1.0.3

1 release file

1.0.2

1 release file

1.0.1

1 release file

1.0.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page