How to Bulk Import Thousands of Videos to Your Tube Site with TubePress

Key takeaways
- TubePress imports 10,000+ videos per pass from CSV or JSON — roughly 10,000 records — and scales to 500,000+ videos in a single database.
- Column mapping lets your file headers match TubePress fields during import, so you never have to reformat an existing catalog first.
- Built-in duplicate detection skips videos you already have, and batch assignment applies categories, tags, performers, and studios across the whole import in one step.
- The TubePress Catalogue adds one-click curated packs with AI title rewriting for unique SEO titles and automatic translation into your site languages.
- Schedule recurring imports through the CronManager pseudo-cron API so fresh content lands automatically without manual uploads.
Manually adding videos one at a time is fine for a demo, but a real tube site launches with a populated catalog. This guide shows you how to bulk import videos to your tube site with TubePress — the differences between CSV and JSON, exactly how to map your columns, a realistic CSV example you can copy, how duplicate detection and batch assignment work, and how to keep fresh content flowing on a schedule. TubePress handles 10,000+ videos per import pass and scales to databases of 500,000+ videos, so the same workflow works whether you are seeding a brand-new site or topping up a large one.
TubePress is a 100% free, self-hosted CMS for adult tube sites, built on modern PHP 8.4 with no encoded files, no Composer, and no Node.js. If you have not installed it yet, the getting-started guide walks through the 5-step web installer, and you can poke around the live demo first.
CSV vs JSON: Which Import Format Should You Use?
TubePress accepts both CSV and JSON for mass import. They produce the same result — the choice comes down to where your data is coming from.
- CSV is the right default. It is what most feed providers, spreadsheets, and existing tube databases export, it is trivial to edit in any spreadsheet app, and it maps cleanly to one video per row. Use CSV unless you have a specific reason not to.
- JSON is the better fit when your source already produces structured data — an API response, a scraper's output, or a feed that carries nested fields. JSON also reads more naturally when a single video has many tags or performers, since those become arrays rather than delimited strings inside a cell.
Both formats run through the same import pipeline: parse the file, map fields, detect duplicates, apply batch assignments, and write the rows. So you can standardize on one format for your team and never think about it again.
Exact Column Mapping for a TubePress Video Import
The strength of the importer is that your file's headers do not have to match TubePress's internal field names. During import you map each source column to a TubePress field, so an existing catalog can be imported as-is without reformatting. The fields you will typically map cover the core video entity plus the relationships TubePress uses to organize content across its six entity types (videos, categories, tags, performers, studios, comments).
| TubePress field | What it holds | Notes |
|---|---|---|
title | Video title shown on the page | Required; used for the slug and meta title |
description | Body / summary text | Feeds JSON-LD VideoObject and Open Graph |
video_url | Source/embed or file URL | The playable source |
thumbnail_url | Poster image URL | Used by the player and listings |
duration | Length in seconds | Numeric |
categories | One or more categories | Delimited in CSV; array in JSON |
tags | Free-form tags | Delimited in CSV; array in JSON |
performers | Linked performers | Created if they do not exist |
studio | Source studio/site | Created if it does not exist |
Categories, tags, performers, and studios are first-class entities, so any value you import that does not yet exist is created and linked automatically. That is what makes a single import file enough to stand up a fully organized site.
A Realistic CSV Example
Here is a small, copy-ready CSV. Note the header row (which you map on import), comma-delimited multi-values inside a quoted cell, and mild generic labels exactly as the product docs use them:
title,description,video_url,thumbnail_url,duration,categories,tags,performers,studio
"Beach Day POV","Sunny outdoor clip in full HD.",https://cdn.example.com/v/1001.mp4,https://cdn.example.com/t/1001.jpg,612,"Amateur,Outdoor","HD,POV","Alex Rivers","Riverside Media"
"Studio Session 12","Behind-the-scenes set.",https://cdn.example.com/v/1002.mp4,https://cdn.example.com/t/1002.jpg,845,"Studio","HD,Behind The Scenes","Jamie Lin","Riverside Media"
"Late Night Vol 3","Low-light indoor shoot.",https://cdn.example.com/v/1003.mp4,https://cdn.example.com/t/1003.jpg,1207,"Amateur","POV,Verified","Alex Rivers,Jamie Lin","Northside Films"
The same three rows as JSON simply nest the multi-value fields as arrays:
[
{
"title": "Beach Day POV",
"description": "Sunny outdoor clip in full HD.",
"video_url": "https://cdn.example.com/v/1001.mp4",
"thumbnail_url": "https://cdn.example.com/t/1001.jpg",
"duration": 612,
"categories": ["Amateur", "Outdoor"],
"tags": ["HD", "POV"],
"performers": ["Alex Rivers"],
"studio": "Riverside Media"
}
]
If your column headers already match these field names, mapping is one click. If they don't, you simply point each source column at the right TubePress field in the import screen — no need to rename columns in your spreadsheet first.
Duplicate Detection: Import the Same Feed Twice, Safely
Re-running a feed is normal — providers add new clips to the same export every week. TubePress's built-in duplicate detection compares incoming rows against what is already in your database and skips the ones you already have, so a second pass only adds the genuinely new videos. This is what makes scheduled, repeated imports practical: you can point the importer at the same growing file or feed without piling up copies of the same clip.
Batch Assignment: Tag the Whole Import at Once
Beyond the per-row categories and tags in your file, TubePress lets you apply batch assignments to the entire import in one step. If you are importing a pack that is all from one studio, or you want every video in this run to carry a specific category or tag, set it once at import time instead of editing 10,000 rows. You can batch-assign categories, tags, performers, and studios — useful for organizing a launch by source, by niche, or by import date.
The TubePress Catalogue: One-Click Import with AI Title Rewriting
If you do not have your own feed yet, the TubePress Catalogue is the fastest way to fill a site. You browse curated video packs and import them with one click — no CSV to build. Two things make this better than dropping in a raw feed:
- AI title rewriting generates unique, SEO-friendly titles for every imported video, so you are not publishing the same duplicate titles that other sites running the same pack have. Unique titles matter for search; see the tube site SEO guide for how this ties into your overall strategy.
- Automatic translation renders titles into your site's configured languages, which pairs with TubePress's 30+ interface languages and per-page content translation.
New free accounts get 150 free credits to try Catalogue imports. Because TubePress itself is free to use and self-hosted, the Catalogue is an optional accelerator on top of the free CMS — not a paywall around features. That is a meaningful contrast with paid, encoded platforms; see the full comparison if you are still choosing a CMS.
Scheduling Recurring Imports with Cron
For a site that should stay fresh, you do not want to run imports by hand. TubePress ships a CronManager pseudo-cron API that the platform already uses for tasks like recalculating its CTR ranking every 10 minutes and running scheduled daily database backups. You can hang recurring imports off the same scheduling system so new content lands automatically.
The CTR ranking is worth knowing about here because it directly rewards a steady supply of fresh content. Each video's rank is computed as:
ctr_score = (views / (impressions + 50)) * EXP(-0.01 * days_age)
Newer videos get an age boost via the EXP(-0.01 * days_age) decay term, and the score recalculates every 10 minutes with bot filtering. A scheduled import keeps a stream of new days_age = 0 videos entering rotation, which is exactly the behavior the ranking is designed to surface. There are also 13 override hooks if you want to customize the scoring later.
A Repeatable Import Workflow
- Export or assemble your catalog as CSV (default) or JSON.
- Upload the file and map each source column to the matching TubePress field.
- Set any batch assignments — a studio, a launch category, a date tag — for the whole run.
- Let duplicate detection skip anything already in the database.
- Run the pass: roughly 10,000 videos land.
- For ongoing freshness, schedule the import via CronManager and/or use Catalogue packs with AI-rewritten titles.
That same loop scales from a first launch to a library of 500,000+ videos without changing your process. Once your catalog is in, point your energy at SEO and monetization — content volume is just the foundation. You can review every importer and ranking detail on the features page.
Ready to bulk import your catalog? Download TubePress free and have a populated tube site live in minutes.
Frequently asked questions.
How many videos can TubePress import at once?
Should I use CSV or JSON to import videos?
Do my CSV column names have to match TubePress's fields?
How does TubePress avoid importing duplicate videos?
What is the TubePress Catalogue and what does AI title rewriting do?
Can I schedule video imports to run automatically?
Related guides.

Video Encoding for Self-Hosted Tube Sites: FFmpeg, AV1 & Storage Math
The rendition ladder, the FFmpeg flags, the AV1 decision and the terabyte math — the encoding guide the cloud-video vendors won't write.

Where to Get Content for an Adult Tube Site: 7 Legal Sources
Ripping videos is not a strategy. The seven legal ways to fill a tube site in 2026 — licensed libraries, sponsor feeds, revshare, creator deals, embeds and AI — compared by cost and paperwork.

How to Start an Adult Tube Site in 2026: The Complete Step-by-Step Guide
Everything you need to launch an adult tube site in 2026 — niche and domain, hosting, installing the free self-hosted TubePress CMS, importing thousands of videos, on-site SEO, and monetization basics.
Ready to launch your tube site?
TubePress is free, self-hosted and yours to keep — no license fees, no ionCube, no lock-in. Start with 150 free credits.