CLI tool
voxel51/fiftyone avatar
voxel51/fiftyone

FiftyOne: a pip install for users, a Node and Yarn build for anyone touching the App

Refine high-quality datasets and visual AI models. Create and activate a virtual environment Press Win + R.

11,306 stars849 forksTypeScriptApache-2.0

At a glance

What is it?
voxel51/fiftyone is Voxel51's Apache-2.0 tool for visualizing, labeling and evaluating computer vision datasets and models. The pip release is one line; the source install, branch layout and App rebuild steps are where people get stuck.
Who is it for?
FiftyOne fits Python users on 3.10 to 3.13 who want to inspect, label and evaluate image and video datasets, and the pip release is the path to take unless you need to change the App. It does not fit teams that cannot run Node and Yarn when they need unreleased fixes, or that expect collaborative cloud deployment from the open-source package, which Voxel51 sells separately.
Can I use it commercially?
Yes. Apache-2.0 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 received new commits within the last day.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on November 14, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • voxel51/fiftyone11,306 ★ · +351
Star history
Repository2026-07-292026-11-14
voxel51/fiftyone11k11.3k

351 Stars in the last 108 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

One pip package to install, three to remove

For most users the whole install is a single command, and the project recommends doing it inside a virtual environment to keep the workspace clean:

shell
pip install fiftyone

FiftyOne supports Python 3.10 through 3.13. An interpreter outside that window, such as an older 3.9 environment, is not covered, so check `python3 --version` before blaming the package for a failed install.

The uninstall line shows that the single install pulls in more than one distribution. Removing only `fiftyone` leaves the other two behind:

shell
pip uninstall fiftyone fiftyone-brain fiftyone-db

If you are cleaning a shared environment or rebuilding one after a failed upgrade, use the full three-package command so stale `fiftyone-brain` or `fiftyone-db` versions do not linger and mismatch the next install.

A source install builds the App with Node.js and Yarn

Installing from source is the route for contributors and for anyone who wants the latest development version. It compiles the browser App as well as the Python package, so it needs Python 3.10 to 3.13, Node.js and Yarn. On Linux the project recommends nvm for an up-to-date Node.js, and Yarn is enabled through `corepack enable` once Node is present.

shell
git clone https://github.com/voxel51/fiftyone
cd fiftyone
shell
# Mac or Linux
bash install.sh

# Windows
.\install.bat

The install script writes to your nvm settings in `~/.bashrc` or `~/.bash_profile`, because the App build depends on them. That is a side effect on your shell configuration, not just on the virtual environment, so review those files afterwards if you manage them by hand. If Python cannot import FiftyOne after the script finishes, add the clone to the path:

shell
export PYTHONPATH=$PYTHONPATH:/path/to/fiftyone

The default branch is develop, but upgrades pull main

The repository's default branch on GitHub is `develop`. A plain `git clone` therefore checks out `develop`. The upgrade instructions, however, tell you to move to `main` and pull:

shell
git checkout main
git pull

# Mac or Linux
bash install.sh

# Windows
.\install.bat

The consequence is that the first upgrade after a fresh clone silently switches you from `develop` to `main`. If you cloned to test something only present on `develop`, running the upgrade block as written moves you off it. Decide which branch you want to track and run `git checkout` for that branch explicitly instead of copying the upgrade steps unchanged.

The Colab variant clones with `--depth 1`, which gives you only the latest commit of the default branch, so switching branches later inside that notebook needs a fresh fetch.

Pulling App changes does not rebuild the App

Updating the Python side of a source install takes effect as soon as you pull, but the App is a compiled frontend. After pulling new App changes you have to rebuild it, either by rerunning the install script or by running `yarn build` inside the `./app` directory.

Skipping that step leaves you with Python code from the new commit talking to an App built from the old one. Any fix you pulled for the interface will not appear, and new backend behaviour may not have a matching control in the browser. The quickest check after a `git pull` that touched `./app` is to run the rebuild before opening a session, rather than after something looks wrong.

Developer mode and an external MongoDB

Contributors are expected to use a developer installation, which is the same script with a `-d` flag:

shell
# Mac or Linux
bash install.sh -d

# Windows
.\install.bat -d

The project also points developers toward connecting FiftyOne to a self-installed and self-managed MongoDB instance instead of the default setup. It is described as optional, and the steps live in the configuration section of the user guide at docs.voxel51.com under configuring a MongoDB connection. The practical reason to do it is control: you own the database lifecycle and can inspect it with your own tools. The cost is that you also own backups, upgrades and access control for that MongoDB server, which the default install does not ask of you.

Linux needs system libraries before pip will help

On Linux, a few system packages are required before FiftyOne installs cleanly. The prerequisites are written against a clean Ubuntu Desktop 24.04 and are expected to work on Ubuntu 24.04, 22.04 and Ubuntu Server:

shell
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install python3-venv python3-dev build-essential git-all libgl1-mesa-dev

You also need `openssl` and `libcurl`. Debian-based distributions name the package `libcurl4` or `libcurl3` depending on their age, so use the name your release ships:

shell
# Ubuntu
sudo apt install libcurl4 openssl

# Fedora
sudo dnf install libcurl openssl

Video datasets need FFmpeg on top of that. It is optional for image-only work and needed once you plan to work with video:

shell
sudo apt-get install ffmpeg

Colab source installs only work after a runtime restart

Google Colab is supported for source installs, with one step that is easy to miss: after the cell finishes you must restart the runtime before importing FiftyOne.

shell
%%shell

git clone --depth 1 https://github.com/voxel51/fiftyone.git
cd fiftyone

# Mac or Linux
bash install.sh

# Windows
.\install.bat

If you import in the same session without restarting, you are still running whatever was loaded before the install. For a quick look without building anything, the project links a quickstart notebook on Colab from the fiftyone-examples repository, which avoids the source build entirely.

The open-source tool stops short of team deployment

FiftyOne is released under Apache-2.0 and is aimed at visualizing and labeling data, evaluating models and improving data and model quality. Production-grade, collaborative, cloud-native enterprise workloads are not what the open-source package targets; for those, the project sends users to Voxel51's hosted offering at app.voxel51.com. Teams that need shared access and managed infrastructure should budget for that product or build it themselves.

The open-source side is moving steadily. Release v1.21.0 shipped on 2026-08-19, v1.22.0 on 2026-09-12 and v1.22.1 on 2026-09-29, and the last push to the repository was on 2026-11-02. A Docker image is published as voxel51/fiftyone on Docker Hub alongside the PyPI package.

Editorial conclusion

FiftyOne fits Python users on 3.10 to 3.13 who want to inspect, label and evaluate image and video datasets, and the pip release is the path to take unless you need to change the App. It does not fit teams that cannot run Node and Yarn when they need unreleased fixes, or that expect collaborative cloud deployment from the open-source package, which Voxel51 sells separately. Before a source install, confirm which branch you are on, since the repository defaults to develop while the upgrade steps pull main.

Frequently asked questions

What is FiftyOne?

FiftyOne is Voxel51's open-source tool for building high-quality datasets and computer vision models. It lets you visualize and label data, evaluate models and improve data and model quality.

How do you install FiftyOne?

Run pip install fiftyone in a virtual environment with Python 3.10 to 3.13. Contributors can instead clone the repository and run bash install.sh on Mac or Linux or .\install.bat on Windows.

How do you spell FiftyOne?

The project writes its name as FiftyOne, one word with a capital O. The Python package and repository use the lowercase form fiftyone.

What does Voxel51 do besides FiftyOne?

Voxel51 builds and maintains FiftyOne and offers a separate product at app.voxel51.com for production-grade, collaborative, cloud-native enterprise workloads.

Official sources

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
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.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/voxel51-fiftyone.svg)](https://hysenlabs.com/projects/voxel51-fiftyone)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/voxel51-fiftyone.svg)](https://hysenlabs.com/projects/voxel51-fiftyone)

Was this useful?