Model or dataset
Renumics/spotlight avatar
Renumics/spotlight

Renumics Spotlight: a dataframe viewer for images, audio, text and embeddings

Interactively explore unstructured datasets from your dataframe.

1,272 stars92 forksTypeScriptMIT

At a glance

What is it?
Spotlight is a Python package that turns an existing pandas dataframe into an interactive browser view of unstructured data, with typed columns for images, audio, embeddings and more. It is good at fast visual triage of a dataset; it is not a labelling tool, a training framework, or a hosted service.
Who is it for?
Adopt Spotlight if you already have a dataframe of images, audio, text or embeddings and want a local, interactive view of it in a few lines of code, especially during data curation or model debugging. Do not adopt it if you need a hosted annotation platform, a labelling workflow, or a tool that runs without a Python environment, and do not treat it as a replacement for dataset versioning.
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 1 day ago.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

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

DEEP OPEN-SOURCE ANALYSIS

The problem Spotlight targets: unstructured data that a dataframe cannot show you

A pandas dataframe holds images as file paths, audio as byte strings, and embeddings as lists of floats. Printing it tells you the shape and the column names and very little else. The README frames the goal as understanding unstructured datasets fast, and the mechanism it offers is a browser view where a column of image paths renders as thumbnails, a column of float arrays renders as a scatter plot, and the two are linked by selection. The intended user is a machine learning or data engineer who has already assembled a dataframe and now needs to see what is inside it, for example to find mislabelled examples, check class balance, or inspect where a model is uncertain. The listed use cases in the README are all of that shape: finding issues in image, audio and text classification datasets, debugging a gender detection model on emodb, and comparing two models on the same audio data. Spotlight is not trying to be the place where you build the dataset. It assumes the dataframe exists.

How the dtype mapping turns a dataframe column into a viewer

The central idea is a per-column type annotation. The README's first example is two lines: import spotlight from renumics, then call spotlight.show with the dataframe and a dtype dictionary mapping column names to spotlight types, such as spotlight.Image for the image column and spotlight.Embedding for the embedding column. The dtype argument is what tells the front end how to render each column, and the project is written in TypeScript on the front end with a Python package on the back, so the browser is doing the rendering while Python serves the data. The README lists the supported modalities as images, audio, text, videos, time-series and geometric data, and the repository topics add meshes to that list. What the material does not describe is the transport between the Python process and the browser, how the server is started and stopped, or what happens when a column contains a mix of types. Those are things to check in the API reference rather than assume.

Installing Spotlight and its extras

The quickstart requires Python 3.10 or higher and installs with pip install renumics-spotlight. The README recommends doing this in a separate virtual environment, which is ordinary advice for a package that can pull heavy dependencies. Two optional extras matter. The analyzers extra, installed as pip install renumics-spotlight[analyzers], enables optional analyzers. The torch extra enables optional embeddings, and the README gives three variants: a CPU build using an extra index URL pointing at the PyTorch CPU wheel index, a default installation, and a CUDA build using the cu128 wheel index. There is a compatibility note worth reading twice: if you use Spotlight with Hugging Face datasets version 4, which the README calls the current default, you also need the torch extra for audio data and FFmpeg installed on the system. That is a concrete constraint that will bite anyone loading an audio dataset without checking their datasets version first.

Where Spotlight stops: no labelling, no hosting, no guarantees about your dataframe

Spotlight is a viewer. Nothing in the material suggests it writes labels back, manages annotation queues, or tracks dataset versions. If your problem is coordinating five annotators across a shared image set, this is the wrong tool, and the README's own framing (explore, identify clusters, communicate) points at analysis rather than production data operations. The second limitation is environmental. The package is a Python library that renders in a browser, so it assumes you have a machine where you can install Python packages and run a local server. Teams that work entirely inside a notebook platform with restricted outbound installs, or that need a URL their whole organisation can open without a Python environment, will find that boundary quickly. The third is that the dtype mapping is manual. You declare which column is an image and which is an embedding; the library does not infer it, and the README does not claim it does. On a wide dataframe with many unstructured columns, that declaration is work you do by hand.

The alternative most teams already have: notebooks and matplotlib

The realistic alternative is not another visualisation product, it is the notebook stack you already use. A grid of PIL thumbnails, a UMAP scatter coloured by label, and a bit of ipywidgets gets you a static or semi-interactive view with no new dependency. The difference in approach is that the notebook route renders once and you re-run cells to change the view, while Spotlight keeps a live browser session in which selecting points in the embedding scatter filters the table and the media columns together. That interactivity is the whole product. If your analysis is a one-off figure for a report, the notebook route is cheaper. If you are going to spend an afternoon clicking through clusters and re-filtering, the live session earns its install. Note that the README's use case table includes several Hugging Face Spaces demos, which suggests the project can be deployed as a hosted app, but the README does not document that deployment path, so treat it as unverified from this material.

Licence and maintenance posture

Spotlight is MIT licensed, which is permissive and places few obligations on commercial use. The repository is not archived, and the release list shows v1.8.0 in April 2026, v1.8.1 in July 2026 and v1.8.2 in August 2026, so the project is receiving patch releases on a roughly monthly cadence in the period covered by the material. That is a maintenance signal, not a quality claim. The upgrade cost sits mostly in the optional extras: because the torch extra is tied to a specific wheel index (cpu or cu128 in the README examples), a PyTorch upgrade in your environment and a Spotlight upgrade can interact, and the Hugging Face datasets version 4 note shows that upstream library changes propagate into Spotlight's install requirements. Budget for re-testing the install in a clean virtual environment when you bump either side. Nothing here constitutes legal advice; read the MIT text and your own organisation's policy if licence terms matter to you.

What to verify before you build on it

Three checks are worth doing before Spotlight becomes part of a workflow. First, confirm the Python version, since the quickstart states 3.10 or higher and nothing in the material suggests a fallback for older interpreters. Second, pin down your datasets version and whether you need audio, because the FFmpeg and torch extra requirement is conditional and easy to miss. Third, decide in advance what the dtype dictionary will contain for your dataframe, and whether the columns you care about map cleanly onto the supported types. If a column is a list of file paths rather than an array, or a custom object, the README does not say how it will be handled. The project's documentation site, playbook and API reference are linked from the README and are the place to resolve those questions, because the README itself stops at the quickstart.

Editorial conclusion

Adopt Spotlight if you already have a dataframe of images, audio, text or embeddings and want a local, interactive view of it in a few lines of code, especially during data curation or model debugging. Do not adopt it if you need a hosted annotation platform, a labelling workflow, or a tool that runs without a Python environment, and do not treat it as a replacement for dataset versioning. Before committing, verify two things: that your Python version is 3.10 or higher as the quickstart requires, and that the extras you need (analyzers, torch) install cleanly against your existing pandas and PyTorch versions, since the torch extra pulls a specific CUDA or CPU wheel index.

Official sources

  1. License: MIT
  2. Project website
  3. README
  4. Releases
  5. Renumics/spotlight on GitHub
Community notes

Community notes