The Problem: Monday.com Doesn't Import Images
This is one of the most frequently requested features on the monday.com community forum and in r/mondaydotcom. The standard workflow looks like this:
- You have an Excel file with rows of products, properties, employees, work orders, claims — anything that needs a visual.
- Each row has an image pasted into a cell. The spreadsheet looks complete.
- You import the CSV/Excel into monday.com using the native importer.
- The images are gone. Only the text columns came through.
- You're now stuck dragging each image into each item one at a time. For 50 items, that's an hour of repetitive clicking. For 500, it's a day.
The reverse is true too: if you export a monday.com board to Excel, the images in your File columns are stripped from the export. Round-tripping images between Excel and monday.com is impossible with native tooling.
Monday.com's CSV import was designed for plain tabular data. Images live in a separate part of the .xlsx file format (anchored to rows via drawing relationships), and the native importer simply ignores that data. The File column has its own dedicated upload mutation in the monday.com API, which the importer never calls.
The Solution: Monday.com Inspector Image Importer
Monday.com Inspector is a free Chrome extension. Its new Image Importer (shipped in v1.6) reads your Excel file the way it's actually structured: it unzips the .xlsx package, pulls every embedded image out of the xl/media folder, anchors each image to its row, and either attaches images to existing items or creates new monday items from each row with images attached.
Two modes — pick the one that matches your workflow:
Items already live on monday. Match each row by name or ID, upload images to a File column. Use when you've already created your items and need to backfill photos.
Each row becomes a brand-new monday item. Map columns, pick a group, the image is attached as part of creation. Use when you're loading a fresh catalogue or dataset.
What both modes give you:
- True bulk upload — drop one .xlsx, all rows processed in one pass.
- Full column mapping in create mode — text, status, dates, dropdowns, people, and 14 other column types are mapped from sheet → monday automatically.
- Match by name or ID in update mode.
- No row limit — handles thousands of items with batching and rate-limit-aware retries.
- Per-row progress — see exactly which rows succeeded, which failed, and why.
- Original filenames preserved — the names that show up in monday's File column match the names in your Excel.
- Zero server hops — everything goes directly from your browser to api.monday.com over HTTPS. Nothing transits a third-party server.
Monday.com Inspector is free to use, open source, and works on every monday.com plan (Free, Basic, Standard, Pro, Enterprise). Your API token never leaves your browser.
Common Use Cases
The teams who get the most value from bulk image upload tend to fall into a few patterns:
Product catalogues
E-commerce teams loading hundreds of SKUs with product photos from a supplier spreadsheet.
Real-estate listings
Property managers and agencies attaching cover photos to listing items in their pipeline boards.
Work-order / field-service evidence
Field teams uploading before/after photos for completed work orders, batched at end of day.
Employee / member directories
HR teams populating profile photos in onboarding boards from a payroll-system Excel export.
Inspection / audit reports
Compliance, safety, and quality teams adding photographic evidence to inspection items.
Menu / recipe / asset libraries
Restaurants, marketing teams, and brand managers loading reference images alongside structured data.
How to Prepare Your Excel File
The whole flow assumes one row per monday.com item. Here's the shape:
| Item Name | SKU | Image |
|---|---|---|
| Acme Widget v2 | AC-001 | [pasted image] |
| Acme Sprocket | AC-002 | [pasted image] |
Step 1: Make sure your images are anchored to rows
Excel anchors an image to a cell automatically when you do any of the following:
- Insert → Picture → This Device while a cell in the target row is selected.
- Copy a screenshot or image and paste it into a cell.
- Drag-and-drop an image file into a cell.
The image-in-cell IMAGE() formula (newer Excel) stores a URL reference instead of the binary image, so it isn't supported in this first version. If your spreadsheet uses IMAGE(), convert by right-clicking each image and choosing "Place in Cell → Picture" or open the IMAGE() URL in a browser, save the file locally, then paste it back as a regular embedded picture.
Works on both monday.com exports and hand-built sheets
The Image Importer auto-detects which format your file is in:
- monday.com classic board exports — these put the board name on row 1, the group name on row 2, the column headers on row 3, and items from row 4 onwards. The importer skips the preamble automatically, ignores subitem rows, and reads parent items only. Re-export a board, drop images into the rows you want, and re-upload — the original "Files" / "Files 1" columns remain valid targets.
- Hand-built flat spreadsheets — header on row 1, items from row 2. Same flow.
The detected format is shown in the upload card after parsing so you can tell at a glance which path the tool took.
Step 2: Add a match column
The Image Importer needs to know which monday.com item each image belongs to. Add a column with either:
- Item name — case-sensitive. The most natural option for teams whose items have unique names.
- Item ID — the long number from monday.com's URL when you open an item. Use this if your item names aren't unique, or if you're uploading to a board with thousands of items where exact matching is risky.
Don't have item IDs handy? Two ways to grab them:
- Open your board → Board menu → Export to Excel. The export includes an Item ID column.
- Use Monday.com Inspector's Query Inspector to fetch IDs via GraphQL and copy them into your spreadsheet.
Step 3: Make sure your target board has a File column
If your monday.com board doesn't have a File column yet, add one before running the import:
- Open the board.
- Click the + at the right end of the column header row.
- Choose Files.
- Name it (e.g. "Photo", "Cover Image", "Evidence").
Step-by-Step: Running the Image Import
1. Install Monday.com Inspector
Install from the Chrome Web Store →
2. Open the Image Importer
Click the extension icon. In the popup, click Image Importer. The wizard opens in a new full-page tab.
3. Connect
Paste your monday.com API token (from monday.com → Profile → Developers → My Access Tokens). Enter the board ID (the long number in your board's URL). The wizard auto-detects the board and lists its File columns.
4. Upload your .xlsx
Drop the Excel file into the upload area. The tool parses every row, extracts every embedded image, and tells you exactly how many it found — for example: "24 data rows · 22 images found · 1.4 MB".
If something is wrong (no .xlsx extension, no embedded images, corrupt file), you get a clear error message.
5. Map columns
Choose Match using — Item name or Item ID. Pick the spreadsheet column that holds your match key. Pick the target file column on monday. The preview tells you immediately how many uploads will run: "Will upload 22 of 22 embedded images. Rows with images but no value in [match column] are skipped."
6. Run
Click Upload N images. The progress panel opens with one row per (row, image) pair. Each row goes through pending → uploading → success (or error with the API message). You can see live counts: succeeded, failed, percent complete.
Uploads run in small concurrent batches with built-in rate-limit handling. Realistic throughput is around 60–120 images per minute, depending on average image size and the monday.com API budget left on your token.
What's Actually Happening Under the Hood
For the curious — and so you can trust the tool:
- The .xlsx is a ZIP archive. The Image Importer opens it with JSZip and reads three structured parts of the package:
xl/worksheets/_rels/sheet1.xml.rels(which links the sheet to its drawing),xl/drawings/drawing1.xml(which defines each image's anchor row), andxl/drawings/_rels/drawing1.xml.rels(which links each drawing reference to a media file). - Images are pulled from
xl/media/imageN.png|jpg|gifas raw binary, with their original MIME type detected from the file extension. - Each image gets a row index from its anchor's
<xdr:from><xdr:row>element. That row index is 0-based at the spreadsheet level (row 0 is the header row), so data row N lives at spreadsheet row N+1 — which is what the importer uses to match to your match-column value. - Items are resolved via monday.com's GraphQL API. The whole board's items list is paginated in (500/page) and indexed in a name → id map. ID-mode skips this step.
- Each image is uploaded via the
add_file_to_columnmutation as a multipart POST tohttps://api.monday.com/v2/file. The variables-and-file form follows the GraphQL multipart spec the monday.com API expects.
Everything runs inside the Chrome extension's sandbox — no proxying through any server, no telemetry, no analytics. The codebase is open source on GitHub if you want to verify any of this.
Limitations & Gotchas
- First sheet only — the importer reads the first worksheet of the .xlsx, which is consistent with everything else in Monday.com Inspector. Move data to sheet 1 if it's elsewhere.
- Item-name matching is case-sensitive — make sure capitalisation in your spreadsheet matches monday.com exactly. Use ID-mode if names aren't reliable.
- One image per cell anchor — Excel can stack multiple images at the same anchor; the importer treats each as a separate upload.
- IMAGE() function not yet supported — URL-only image references in cells are out of scope for v1.6 (see "How to prepare" above for the workaround).
- monday.com per-token rate limits apply — the importer batches and retries 429s with exponential backoff, but very large uploads (1000+ images) will spread out over several minutes by design.
What About the Other Direction — Exporting Images from Monday.com to Excel?
Monday.com's Excel export strips File-column images entirely. The reverse flow (board → .xlsx with embedded photos) is on the roadmap as a follow-up. If you need it, please leave a note on the GitHub issues tracker — every signal helps prioritise.
Frequently Asked Questions
Can monday.com import images from Excel natively?
No. Monday.com's CSV import ignores embedded images, and Excel exports from monday.com strip File-column attachments. The Image Importer in Monday.com Inspector is the only zero-cost way to round-trip images between Excel and a monday.com File column.
Does it work directly on monday.com's "Export to Excel" output?
Yes. Export your board → Board menu → Export to Excel. Open the file, paste images into the rows you want (the "Files" / "Files 1" columns are natural targets), save, then upload back via the Image Importer. The tool detects the monday-export format automatically — it skips the board name on row 1, the group name on row 2, the header row, and any interleaved subitem rows, then matches images to parent items only.
Does this work for monday.com WorkForms / monday.com CRM?
Yes — File columns work identically across monday.com Work Management, CRM, Sales, Dev, Marketer, and Service. The Image Importer talks to the API directly, so any board with a File column works.
Will images appear as previews in the File column?
Yes. monday.com auto-renders image previews for any common image MIME type (PNG, JPG, GIF, WebP, etc.) attached to a File column. The previews appear immediately after upload — no extra step.
Can I overwrite existing files in a column, or does this append?
Currently it appends — the image is added to the File column alongside whatever's already there. Bulk-clear-before-upload is a planned follow-up. For now, if you want a clean slate, manually clear the column on a few representative items first.
Does this support subitems?
The current version targets top-level items. Subitem support is a one-line change once we validate demand; open an issue if you need it.
What's the largest image size monday.com accepts?
monday.com's File-column upload limit varies by plan but typically 500 MB per file. Practically, most teams attach images well under 10 MB. Larger files just take proportionally longer to upload — there's no hidden limit imposed by the Image Importer itself.
Is it free?
Yes. Monday.com Inspector is completely free, open source, and works on every monday.com plan. No accounts, no row limits, no usage caps.
Install Monday.com Inspector — free, no account needed. Open the popup, click Image Importer, drop your .xlsx, done.
Related Guides
How to Import Subitems in Monday.com
Native monday.com import skips subitems. Here's how to import parents + subitems from a single CSV.
How to Bulk Update Items in Monday.com
Update hundreds of items across multiple columns from a CSV file. Status, dates, assignees, and more.
Monday.com CSV Import: Complete Guide
The full CSV format reference, 18 supported column types, and native vs. Inspector comparison.
Monday.com GraphQL API: Tutorial + Templates
14 ready-made queries, complexity budget meter, saved-queries library — no code required.