Dreamstime accepts files over plain FTP at upload.dreamstime.com, and the transfer is only the first half of the job. Files land in a staging area called the Unfinished section, where titles, descriptions, keywords and categories still have to be attached before anything reaches a reviewer. Knowing where that split falls is what keeps a 400-file night from turning into a week of clicking through forms.
What Dreamstime checks before you open an FTP client
The technical floor is published on Dreamstime's own contributor page: images need at least 3 megapixels of resolution, and the maximum file size is 1 GB. Photos and raster illustrations go up as JPEG in RGB. Vectors are accepted as .ai, .eps, .cdr or .svg files, and camera RAW files are accepted for photos. Nothing about the FTP route relaxes any of that. An undersized JPEG transfers perfectly well, sits in your account looking healthy, and then fails at review a week later.
The metadata floor matters just as much, because the transfer itself carries none of it. Dreamstime wants a title between 5 and 250 characters in English, a description that is not a second copy of the title, at least seven keywords, and up to three categories ordered by relevance. The field-by-field breakdown lives in our Dreamstime metadata requirements reference, and it is worth reading before the first batch rather than after it, because every field the CSV does not carry becomes a form you fill in by hand.
The FTP connection, field by field
Dreamstime's instructions page gives the connection as plain FTP rather than SFTP or FTPS. The settings it lists are these:
- Host: upload.dreamstime.com
- Logon type: Normal, not Anonymous
- Username: your Dreamstime account ID, the numeric one, not the name on your profile
- Password: your account password, case sensitive
- Transfer mode: passive
Two of those cause most of the failed first attempts. The username is the numeric account ID, so a contributor typing their display name gets a clean authentication refusal and assumes the account is not FTP-enabled. And the connection expects passive mode, which is where the familiar symptom of a session that logs in happily and then hangs on the directory listing comes from. Dreamstime names FileZilla in its own walkthrough and mentions FireFTP, Total Commander and CuteFTP as alternatives, but any client that speaks plain FTP will connect.
Inside the root there are two subfolders, and neither is decoration. The additional folder takes supplementary formats belonging to a file you are already submitting. The modelrelease folder takes release documents, and later the model-release CSV. Dropping a release into the root instead fails silently: the transfer reports success, the file is never picked up, and the result looks identical to a release you forgot to send.
How a Dreamstime FTP batch actually moves
The six stages of a Dreamstime transfer: connect over plain FTP in passive mode with your numeric account ID, send images to the root and releases to modelrelease, wait a couple of minutes for files to reach the Unfinished section, upload the CSV only after that, complete whatever the CSV left blank, then wait for review.
Where your files go after the transfer
A completed transfer is not a submission. Dreamstime moves uploaded files out of the FTP area and into the Unfinished section of your account, normally within a couple of minutes. During that window the file exists on the server but does not appear anywhere you can see it, and that gap is where the most expensive mistake on the platform gets made.
Dreamstime's instructions warn explicitly against re-uploading a file before checking Unfinished. A second copy sent during the processing window is treated as a new file rather than a replacement, so you end up with a duplicate pair that has to be resolved by hand later. The same discipline applies across your whole distribution list, which is the subject of our guide to avoiding duplicate uploads across agencies.
From Unfinished you complete each file: title, description, keywords, categories, release selection and submission type. That is the slow half of the workflow, and removing as much of it as possible is the entire reason the CSV route exists.
The CSV route, and why the order is fixed
Dreamstime publishes two spreadsheet templates, one for images and one for model releases. Each carries a data sheet and a legend sheet, and the legend is where the real complexity sits. Extended licences, image donation, model release status, submission type and categories are all entered as the standard numeric value assigned in the legend rather than as free text. Titles, descriptions and keywords are typed normally. Getting a legend code wrong does not throw an error; it quietly files your image under something you did not intend.
The sequence is not a suggestion, and reversing it is the single most common CSV failure. Upload the images first. Let them process until they appear in the Unfinished section. Only then upload the generated CSV. A spreadsheet that arrives before its images has nothing to attach itself to, and it does not wait around for them.
Matching happens on the filename and on nothing else. Dreamstime states that only the filenames mentioned in the spreadsheets will be autopopulated, which means a renamed export, a trailing space, or a version suffix added after the CSV was generated simply drops that row on the floor. The file still uploads; it just arrives with no metadata and no warning. This is the practical argument for settling on one naming convention and never touching it mid-batch, which we cover in stock photo file naming.
Model-release CSVs follow the same rule as the releases themselves: they belong in the modelrelease subfolder, not the root. Dreamstime suggests Google Sheets or OpenOffice for producing the files, and gives step-by-step export instructions for both, mostly because CSV export settings are the other place these spreadsheets go wrong.
Batch sizes and the limits Dreamstime actually publishes
Dreamstime does not publish a per-batch file count or a daily upload cap in its FTP instructions. That is worth stating plainly rather than filling the gap with a number, because the figures that circulate in forum threads are contributors describing their own accounts, not policy. What the platform does publish is the 1 GB per-file ceiling and the 3 megapixel floor.
So batch sizing comes from the processing window instead of from a stated rule. Every file has to clear into Unfinished before its CSV row can find it, which makes the useful unit a batch you can wait out in one sitting rather than the largest batch the server will physically accept. Contributors running nightly deliveries usually settle on a size where the whole send, the processing pause and the CSV all fit inside the same session.
One published number does shape how people think about volume here. Dreamstime's exclusive upload bonus of $0.20 per file applies only to the first 10,000 approved files, and only where the download rate is above 0.1 — the wider level system is in our breakdown of Dreamstime contributor payouts. Approved is the operative word, and approval is where volume meets reality: files are assessed technically, aesthetically and commercially, and the recurring refusal texts are catalogued in Dreamstime rejection reasons.
Will this export clear Dreamstime, Adobe Stock and Shutterstock?
Dreamstime accepts images from 3 megapixels with a 1 GB maximum file size, which is far looser than Adobe Stock's 4 to 100 MP range and 45 MB ceiling or Shutterstock's 50 MB browser limit. An export above 4 MP and under 45 MB clears all three.
Fitting Dreamstime into a multi-agency night
Dreamstime's connection is the simplest of the major agencies and that cuts both ways. Adobe Stock runs SFTP, Shutterstock runs FTPS with explicit TLS, and both issue credentials separate from your login. Dreamstime uses plain FTP with your actual account password, which means the credential that controls your payouts travels with every batch. Store it somewhere that is not a text file beside your exports, and treat any tool you hand it to accordingly.
The genuinely awkward part of running Dreamstime next to everything else is the two-stage flow. Most agencies read embedded IPTC and XMP metadata straight off the file, so one correctly tagged export serves every destination. Dreamstime's bulk path instead expects a separate spreadsheet, uploaded second, keyed on filenames. Keywording differs as well: Dreamstime splits your phrases into individual terms and re-sorts them alphabetically, so the keyword ordering you fight over elsewhere carries no weight at all — the detail is in Dreamstime keywording tips.
In practice that means your Dreamstime batch wants its own slot in the schedule rather than being bolted onto a simultaneous multi-agency push: send, pause for processing, then send the CSV. If you are building that schedule from scratch, our notes on running large nightly FTP batches cover the sequencing and the retry behaviour that keeps a half-failed transfer from becoming a duplicate problem the next morning.
This is the part Rastock.ai was built to absorb. It writes titles, descriptions and keywords from the image itself against each agency's own rules, then delivers over FTP and SFTP to more than ten agencies and tracks the status of every file it sent. You keep your originals and your IPTC and CSV exports, there is no revenue share and no ownership claim, and banned or mandatory keyword rules are applied per agency before anything leaves your machine — the full feature list is here. The trial runs 14 days and takes no card, so you can measure it against your own Dreamstime batch before deciding anything: see the plans.
Frequently asked questions
What is the Dreamstime FTP address?
Dreamstime's own FTP instructions give the host as upload.dreamstime.com, over plain FTP rather than SFTP. The logon type is Normal, not Anonymous. Your username is your numeric Dreamstime account ID, not your display name, and the password is your account password, which is case sensitive. The connection is expected to run in passive mode; active mode is the usual cause of a session that connects but never lists a directory.
Why do my FTP files not appear in my Dreamstime account?
A finished transfer is not a submission. Dreamstime moves uploaded files out of the FTP area into the Unfinished section of your account, usually within a couple of minutes. Until that move completes the file sits on the server but is not visible in your account. Dreamstime warns specifically against re-uploading during that window, because a second copy becomes a duplicate rather than a replacement.
When should I upload the Dreamstime CSV file?
After the images, never before or alongside them. Dreamstime's tutorial is explicit: upload the images first, let them process into the Unfinished section, then upload the generated CSV. The spreadsheet matches on filename alone, and only filenames listed in it are autopopulated. A model-release CSV goes into the modelrelease subfolder rather than the root.
What are Dreamstime's file size and resolution limits?
Dreamstime's contributor page states a minimum of 3 megapixels of resolution and a maximum file size of 1 GB. Photos and raster illustrations go up as JPEG in RGB, vectors as .ai, .eps, .cdr or .svg files, and camera RAW files are accepted for photos. The FTP route does not relax any of these: an undersized file transfers perfectly well and then fails at review.
How many files can I upload to Dreamstime in one batch?
Dreamstime does not publish a per-batch file count or a daily cap in its FTP instructions, so any specific number you see quoted is someone's estimate rather than a rule. The practical limit comes from the processing window instead: every file has to clear into the Unfinished section before the CSV lands, so the useful batch is one you can wait out in a single sitting.
Do the modelrelease and additional folders matter?
Yes, and getting them wrong fails silently. The FTP root contains two subfolders: additional, for supplementary formats belonging to a file you are already submitting, and modelrelease, for release documents and the model-release CSV. A release dropped into the root instead of modelrelease transfers successfully and is then never picked up, which looks identical to a file that was simply never sent.