Skip to main content
An alternative toGit LFS

Git for video and photos

Git changed how the world ships code. Dits does the same for the files Git can't handle—video, RAW photos, and huge creative projects. Edit a 4 GB file and store only what changed, not another copy.

Free & Open SourceNo account requiredMIT Licensed

Why does this exist?

Because version control never got solved for the big stuff. Here's the whole story in three steps.

The problem
final.mp4
final_v2.mp4
final_FINAL.mp4
final_FINAL_real.mp4

Every change is a new multi-gigabyte copy. You re-upload the whole file to change five seconds. No history, no diff, no idea what shipped.

Why Git can't help

Git was built for text. A one-line code edit is tiny—but a one-second video trim rewrites the entire file.

Git and Git LFS just store another full copy every time. They were never designed for gigabytes of binary media.

What Dits does

Real version control for big binary media. Edit a video or photo and Dits stores only the difference—kilobytes, not gigabytes.

See exactly which frames changed. Keep a full, honest history. No more _FINAL_v27.

“Git lets developers version their code and only save what changed. Dits does that for video and photos.

That's the whole pitch. Everything below is how.

Understand your files.

They're more than blobs on a hard drive.

See exactly what changed

Dits splits files into content-defined chunks. When you edit a 10GB video, only the changed chunks are stored. View diffs, track history, and understand your storage at a glance.

  • Content-aware chunking at 2+ GB/s
  • BLAKE3 integrity verification
  • 60-80% typical storage reduction
project_v3.mp410.2 GB
35 chunks reused5 new chunks (512 MB)

Sync smarter.

Stop re-uploading the same data.

terminal
$ dits push origin main
Analyzing changes...
→ 3 files modified (10.2 GB logical)
→ 47 new chunks identified
→ Uploading 512 MB (95% deduplicated)

✓ Pushed in 4.2s
Sync engine on the roadmap

Delta sync, not full re-upload

Traditional tools re-upload entire files on every change. Because Dits content- addresses every chunk and frame, sync only needs to transfer what's different—and a dropped transfer resumes where it left off instead of restarting. (The networked sync engine is in active development; the content-addressed store it builds on works today.)

Traditional

10.2 GB

With Dits

512 MB

Share directly.

No cloud upload required.

On the roadmap

Peer-to-peer collaboration

The plan: share repositories directly between computers with a join code— end-to-end encrypted, no file-size limits. Because frames are content-addressed, transfers will resume where they drop and never re-send footage you both already have. (Networking is in active development—local workflows work today.)

  • Works through firewalls and NATs
  • AES-256 encryption
  • No bandwidth caps or limits
Coming soon
7KJM-XBCD

The planned flow: send a join code, your collaborator connects directly

Get started in seconds

Install with your preferred package manager

$ npm install -g @byronwade/dits

Then run dits init to start

Frequently asked questions

Actively developed

4 of 10 phases complete — the local engine works today; networked sync is on the roadmap.

Complete
4
of 10 phases
In progress
2
active now
Planned
4
on the roadmap
EngineAtom ExploderVFSGit ParityFrame Engine (FACR)LockingNetwork SyncP2P SharingHologramDeep Freeze
Follow on GitHub

A new era of version control

Start versioning your large files today. Free, open source, and built for creative workflows.