Vector Visualizer

What does an embedding look like? Take a CLIP/SigLIP/DINOv2/Florence-2 vector from an image (or a CLIP vector from text) and map its hundreds of dimensions onto a 2D image: consecutive triples as RGB pixels, Hilbert-curve walks, self-similarity matrices, phase wheels. Load two inputs to see their diff and morph between them. With Florence-2 (a VLM) each image also gets a caption: the model's embedding and what it says it sees, side by side. Everything runs locally in your browser.

not loaded
Downloading model

A Input A

Drop an image, or click to choose

Nothing embedded yet.

B Input B (optional, enables diff & morph)

Drop an image, or click to choose

Nothing embedded yet.

Visualization

A vs B

cosine similarity
dimensions
Difference (A − B)
 
Morph (slerp A→B) · t = 0.50
 
A (t=0) B (t=1)

Rotation sweep

Re-embed the image at each rotation and stack the vectors into one picture: each row is one angle's embedding, each column one dimension (jointly normalized, so row-to-row shifts are real). The delta view subtracts the 0° row, so dimensions that "move" under rotation light up.

Every panel is the same vector drawn differently; none of these images is "what the model sees"; they're lenses on a point in embedding space. Hover any pixel to see which dimension it is and its value. Image embeddings are mean-pooled and L2-normalized exactly like the embedding lab (shared lib/ core); CLIP text embeddings share the image space, so a caption and a photo can be meaningfully compared and morphed. Powered by Transformers.js, model blobs cached by the service worker. GitHub