---
title: File Upload Issues
description: Fix a refused file type, the 100 MB and 20-file limits, names caught by the blocked-extension check (results.json contains .js), and proxies blocking S3.
tags:
  - troubleshooting
  - uploads
---

 An upload asks the platform for a signed URL, then your browser sends the file straight to Amazon S3. Most failures are a file type or size the platform refuses when it issues that URL, or a network path that blocks the direct upload.

## Supported file formats

The platform accepts common scientific, tabular and archive formats. Using the wrong format is the most common cause of upload failures.

### Project file uploads

The upload dialog in a project workspace accepts:

| Kind | Extensions |
|------|-----------|
| Structures and molecules | `.pdb`, `.xyz`, `.mol`, `.sdf`, `.mol2` |
| Sequences and SMILES | `.fasta`, `.fa`, `.seq`, `.smi`, `.smiles`, `.txt` |
| Tables and data | `.csv`, `.tsv`, `.json`, `.xml`, `.xls`, `.xlsx` |
| Archives | `.zip`, `.tar`, `.gz` |

### Chat attachments

A file attached to a chat is also accepted as PDF, Word, PowerPoint or a raster image (PNG, JPEG, GIF, WebP, BMP, TIFF). Macro-enabled Office files, SVG, HTML and scripts are refused.

### General limits

| Constraint | Limit |
|-----------|-------|
| Maximum file size, project upload or chat attachment | 100 MB |
| Maximum files per upload in the upload dialog | 20 |
| Maximum file size, canvas file upload | 50 MB |

Files over the limit are rejected before the upload starts, so no bandwidth is wasted. CLI uploads have their own limits; see the [CLI command reference](/docs/cli/commands).

## File validation errors

The platform checks each file's type, size and name before it issues the upload URL. Tools parse the file's contents later, when a job reads it.

**"File type … is not allowed" or "is not supported"**
- The file's type isn't on the accepted list above. Check that the extension matches the content (for example, a `.txt` file that holds PDB data should be named `.pdb`).
- Double extensions such as `.pdb.bak` or `.sdf.old` aren't recognized. Remove the extra extension.
- "Is blocked for security reasons" means the type is refused outright (macro-enabled Office files, SVG, HTML, scripts, executables).

**"Filename contains blocked extension"**
- Chat attachments refuse any filename that contains `.exe`, `.dll`, `.bat`, `.cmd`, `.sh`, `.ps1`, `.com`, `.msi`, `.vbs`, `.js` or `.hta` anywhere in the name. The check matches text inside the name, not just the ending.
- ⚠︎ The check currently also catches harmless names: `results.json` contains `.js`, and `run.shape.csv` contains `.sh`. Rename the file (for example `results_json.txt`) or upload it to the project instead of attaching it to the chat.

**"Filename contains invalid characters"**
- The name contains `..`, `/` or `\`. Rename the file without them.

**"File size exceeds maximum limit"**
- The file is over the limit in the table above. Split it, or compress it into a `.zip` or `.gz` archive.

**"Valid file size is required"**
- The file has zero bytes. This usually means the export that created it failed silently. Re-export from the source application.

**Invalid PDB format (reported by a tool)**
- The file has a `.pdb` extension but no valid ATOM/HETATM records. Open it in a text editor and check that it contains `ATOM` lines.
- Some visualization tools export PDB files with non-standard formatting. Re-save through PyMOL, ChimeraX, or another structure editor.

**No valid SMILES found (reported by a tool)**
- For CSV input, make sure one column holds SMILES and has a clear header such as `smiles`.
- For `.smi` files, check that each line holds a valid SMILES string, and remove blank lines between entries.

**Invalid molecule at a given row (reported by a tool)**
- The SMILES on that row couldn't be parsed by RDKit. Common causes: unbalanced parentheses, invalid ring closures, or unsupported atom types. Fix or remove the row.
- Kekulized SMILES (explicit double bonds) can fail if the aromatic system is inconsistent. Convert to canonical SMILES with RDKit or Open Babel before uploading.

## Encoding issues

Character encoding problems cause subtle failures where the file looks valid but its content is corrupted.

**UTF-8 requirement:**
- Save text-based files as UTF-8. Latin-1, Windows-1252 and other encodings can break parsing on special characters (accented letters in compound names, Greek symbols in sequence annotations).
- To check encoding on macOS/Linux: `file -I yourfile.csv`. It should say `charset=utf-8`.
- To convert: `iconv -f WINDOWS-1252 -t UTF-8 input.csv > output.csv`.
- On Windows, use Notepad++ to check and convert encoding: Encoding menu then Convert to UTF-8.

**Line endings (CRLF vs LF):**
- Mixed line endings in one file can confuse CSV parsers. If you see extra blank rows or garbled data, normalize line endings.
- On macOS/Linux: `dos2unix yourfile.csv` or `sed -i 's/\r$//' yourfile.csv`.
- On Windows, open in Notepad++ and select Edit then EOL Conversion then Unix.

**Byte Order Mark (BOM):**
- Some Windows applications (notably Excel "Save as CSV") prepend a UTF-8 BOM (`\xEF\xBB\xBF`), which can make the first column header unreadable.
- If the first column header isn't recognized despite looking correct, remove the BOM: `sed -i '1s/^\xEF\xBB\xBF//' yourfile.csv`.

## Batch upload limits

When uploading several files at once:

- **Up to 20 files per upload in the upload dialog.** For more, run several uploads.
- **Each file is checked on its own.** If one file is refused, the others still upload.
- **Drag and drop.** You can drag files onto the upload area. Dragging a folder isn't supported, so select the files inside it instead.

## Upload progress stalling

If the progress bar freezes during upload:

**Network interruption:**
- Each file goes to S3 in a single HTTPS request. If the connection drops (Wi-Fi switch, VPN reconnect), that file's upload fails and must be restarted.
- On an unstable connection, upload files one at a time rather than in a batch.

**Browser tab inactive:**
- Some browsers throttle network activity in background tabs. Keep the upload tab in the foreground until the upload completes.

**Proxy or firewall interference:**
- The browser uploads to an Amazon S3 address, not to `ivybiosciences.com`. A proxy that allows the site but blocks S3 makes every upload fail. Ask IT to allow HTTPS `PUT` requests to Amazon S3.
- Corporate proxies may cap request body size. Check that the cap is above 100 MB.
- If uploads always stall at the same percentage, a TLS-inspecting proxy may be timing out. Ask IT to raise the timeout or bypass inspection for S3.

**Very large files (>50 MB):**
- Files near the 100 MB limit can take several minutes on standard broadband. This is normal.
- The progress bar may pause near 100% while the platform records the finished upload. Wait for the confirmation message.

## Storage quota

Uploaded files, job results and generated artifacts (reports, exports, passport PDFs) are stored in your workspace on Amazon S3.

**Freeing up space:**
- Export results you want to keep, then delete jobs and files you no longer need.
- Remove uploaded files that you no longer need from the project file manager.

If an upload is refused with a quota error, contact support with your plan and the error text.

## File preparation best practices

Follow these guidelines to avoid common upload issues before they happen.

**Filename conventions:**
- Use ASCII letters, digits, hyphens, underscores and dots. Avoid accented characters, CJK characters and emoji.
- Replace spaces with hyphens or underscores: `my-protein.pdb` instead of `my protein.pdb`.
- Keep filenames under 100 characters for maximum compatibility.
- Don't use `< > : " / \ | ? *`.

**Data file preparation:**
- For CSV files, check for trailing commas at the end of lines. Some spreadsheet programs add them.
- Remove summary rows at the bottom of the file (totals, averages), which can confuse parsers.
- Put column headers on the first row. Files with metadata rows above the headers may not parse correctly.

**Molecular file preparation:**
- Validate PDB files (for example with the wwPDB validation service) before uploading.
- For SDF files, end each molecule record with `$$$$` on its own line.
- Sanitize SMILES strings with RDKit or Open Babel before a batch upload to catch errors early.

## When reporting upload issues

If none of the above resolves your problem, include the following in your support ticket:

- Example filenames and file sizes
- The exact error message and the time it occurred
- Whether it was a project upload, a chat attachment or a canvas upload
- Your browser and OS version
- Whether the file uploads successfully from a different browser or network
- A sample file (anonymized if it contains proprietary data) that reproduces the error
- The output of `file -I yourfile.ext` (macOS/Linux) to confirm encoding
