Replay makeup artists video to get inspired.
One option is to run a fake webcam in Lab, this tool instead allow you to upload MP4. The Video Loader exposes a timeline, so you can pause on a recognisable moment and repeat the same action at the same displayed timestamp.
The file stays local to the browser. Selecting a video does not upload it.
After you downloaded a few videos.
Wait for Ready
The status indicates when the local face-api models and the experimental image embedder have loaded.
Select Load MP4
Choose a video from your device. The duration and millisecond timeline become available when the browser decodes its metadata.
Choose a baseline frame
Pause the video and move the timeline to a clear face. Note the displayed time, then select Record face.
Choose a comparison frame
Move to another time. Keep the variable you want to study clear, such as pose, expression, occlusion, or visible makeup.
Select Seek face
The Loader detects the current face and compares it with the saved 2D and 3D records. A new activity entry is added at the time where you pressed the button.
Read the log
Record the timestamp, nearest ID, 2D distance, 3D similarity, thresholds, and whether each pipeline returned a face.


Record creates the reference. Seek compares with it.
| Action | What it does | What appears in the log |
|---|---|---|
| Record face | Saves a 128-value face-api descriptor, a thumbnail when available, and an experimental image embedding under the same ID. | Saved ID, detection score, 2D landmark count, embedding length, and video position. |
| Seek face | Detects the face in the current frame and compares it with the faces already in memory. | Nearest 2D distance, nearest 3D similarity, faces compared, thresholds, and structured details. |
The 2D and 3D numbers have opposite directions. A lower face-api Euclidean distance is closer. A higher image-embedding cosine similarity is closer. Do not compare the raw numbers as if they used the same scale.

Control the frame. Record the environment.
- Pause before pressing an action. Confirm the playhead after the seek completes.
- Use the same file and timestamp when comparing revisions of the application.
- Record browser, model files, hardware backend, and thresholds for consequential comparisons.
- Do not treat the wall-clock time in the log as the video timestamp. The video position chip is the relevant one.
- A frame with no detected face is a valid observation, but it does not produce an identity comparison.
This is a work in progress.
A few ideas are still laying there: produce a ghostyle out of registered videos? extract before-after difference? register in realtime the distance? Let's chat in the github issues.