Camera photo & video recorder
Capture photos and record video with your webcam: switch between front and rear cameras, mirror the preview, save PNG snapshots and download WebM clips — all processed locally.
Runs in your browserEvery computation happens in your browser — your data never leaves this device.
Camera
The video stream stays in your browser and is never uploaded; the browser asks for camera permission first.
Status: Not started
Environment checks
- HTTPS / secure contextSupported
- getUserMediaNot supported
- MediaRecorderNot supported
Photo
Take a photo to preview and download it as PNG.
Recording
Stop a recording to preview and download the clip.
What this tool does
- When all you have is a laptop or phone and you need a quick photo — ID shot, whiteboard, product snap — open the page and shoot, no app install.
- Record a short walkthrough or demo clip and download the WebM file straight away for an editor or a chat.
- Get a natural selfie preview: the front camera is mirrored by default and the captured photo matches what you saw.
- Diagnose camera trouble: the page first checks the secure context, getUserMedia and MediaRecorder, then translates permission denials and busy-device errors into plain language.
Example
Input
Start the camera (facing user, ideal width 1280), then click “Take photo”
Output
unikit-photo-20261010-153045.png
This is the real download filename format: `unikit-photo-<local date>-<local time>.png`. Capture scales the frame down proportionally so the longest edge is at most 1280 px (never up), and with mirroring on the canvas is flipped horizontally — the photo then matches the preview, which means any text in it is reversed.
Frequently asked questions
Why does it say the camera is unavailable?
The usual causes are a denied permission (you can re-allow it from the address bar), a page that is not HTTPS (browsers only expose the camera in a secure context), a camera already in use by another app such as a meeting client or screen recorder, or simply no camera on the device. The page reports these separately — check that all three rows under “Environment checks” read “Supported”.
Why is HTTPS required — can I just open a local file?
Browsers classify the camera as a sensitive capability and only expose it in a secure context. `https://` and `http://localhost` both qualify, but opening a `file://` path or a plain `http://` page will not get getUserMedia. For local development use a dev server on localhost.
What format is the recording, and does it capture audio?
Recording prefers the first container the browser supports, in the order WebM/VP9, WebM/VP8, WebM, falling back to MP4 only if nothing else works — the file extension follows. Audio is not captured: getUserMedia is called with video only, so clips are silent, which is also why no microphone permission is requested.
Are photos and videos uploaded?
No. The stream goes straight from the browser into the video element, snapshots use canvas `toDataURL`, and recording uses MediaRecorder plus a Blob object URL — no network request at any point. When you leave the page the in-memory stream and URLs are released.
What does the mirror switch actually change?
Only the pixels of the snapshot. The live preview is mirrored with CSS; when mirroring is enabled the capture flips the canvas horizontally so the photo matches the preview, which feels natural for selfies. Turn it off when photographing documents or whiteboards, otherwise the text comes out reversed.
Keywords:camerawebcam拍照录像getUserMediaMediaRecorder摄像头mirror拍照工具