Importing videos
The ways to bring content into TubePress and how the import queue works.
TubePress can fill your library in several ways — from adding a single clip by hand to pulling in hundreds of thousands of ready-made videos from the cloud. This page covers the built-in importer and shows you where each other route lives.
Whichever method you choose, the result is the same: ordinary videos you can edit, organise, moderate and publish like any other. Pick the one that matches how much content you have, and whether you want a one-off load or something that keeps topping itself up.
Ways to get content into TubePress
There is no single "right" way to add videos — each method suits a different scale and workflow. Use the table below to choose, then follow the link for the details.
| Method | Best for | What you provide | Recurring? | Credits? |
|---|---|---|---|---|
| Manual upload | A single self-hosted clip | A video file | No | No |
| Single-URL import | One embedded video | An embed code or video URL | No | No |
| Bulk import | Many videos at once | A CSV or JSON file | No (queued) | Only with AI |
| Feed import | Hands-off, ongoing growth | A feed URL | Yes | Only with AI |
| Catalogue | A ready-made library | Picks from 400,000+ videos | No | Yes |
Importing a single video
TubePress has no separate "one video" importer — to add a single video you use the Videos screen at /admin/videos and choose Add Video. There are two ways to provide the media:
- Manual upload — upload a video file you host yourself.
- Single-URL import — paste an
<iframe>embed code or a direct video URL to embed a clip hosted elsewhere.
Fill in the title and thumbnail, attach any categories, tags or performers, then save as a draft or publish straight away. Neither route uses credits.
Bulk import
Bulk import lives on the Upload File tab of /admin/import. It takes a single CSV or JSON file — not a pasted list of URLs — and turns each row or object into a video.
- CSV must have a header row and use commas as separators.
- JSON must be an array of objects.
Drag the file onto the upload zone (or click to browse) and TubePress reads the columns and shows a preview. A minimal CSV looks like this:
title,embed_code,thumbnail,duration,tags
My clip,https://ex.com/v/123.mp4,https://ex.com/t.jpg,612,"solo,hd"Next you map your columns onto TubePress fields by dragging them into place. The fields the importer recognises include:
<iframe> embed code or a video URL.Before you start, set how duplicates are handled (skip or update, matched on video_id), whether to download thumbnails so they are served from your storage, and any optional AI rewriting or translation.
How the import queue works
For anything beyond a small file, choose Start in background. TubePress creates a job and hands it to the import processor, which works through your rows even after you close the tab. No system crontab is required — it runs on the built-in pseudo-cron.
The processor is designed to be safe and resilient:
- Chunked. Rows are imported a few at a time so a web worker is never tied up; an adjustable import speed controls how many per chunk.
- Asynchronous. The pseudo-cron picks the job up as the site receives traffic, and the import page nudges it along while open.
- Self-healing. A job that stalls — for example a server restart mid-run — is requeued automatically after about five minutes and continues where it left off.
- De-duplicating. Rows with a known
video_idare skipped or updated rather than duplicated. - Forgiving. A bad row is logged (the first few errors per chunk are sampled) and the job carries on.
Watching import progress
Open /admin/import and watch the Import Queue. Each active job shows live counts — imported, skipped, errors, and processed-of-total — refreshed every few seconds.
From here you can pause, resume, cancel or delete a job. Jobs from the last 24 hours stay listed so you can review what happened, including sampled error messages for any rows that failed.
Tips & limits
- Only
.csvand.jsonfiles are accepted; other formats are rejected up front. - The practical minimum per row is a title plus an embed code and a thumbnail.
- Upload size is capped by your server's
upload_max_filesizeandpost_max_size. Split very large files, or rely on a background job. - Map a stable
video_idso re-running a file updates rather than duplicates. - Enable Download thumbnails to self-host images instead of hotlinking the source.
- AI rewriting and translation consume credits and need a linked tubepress.io account; if your balance is too low the job stops with a clear message.
Next steps
Still stuck?
Open a ticket from your dashboard and our team will help you out.