If ChatGPT image upload is not working, do not keep retrying blindly. First test one small static PNG or JPG under 20MB in a fresh chat, then classify what failed: the upload button is missing or greyed out, the file is rejected, the upload stalls, a limit or storage message appears, the browser or mobile app behaves differently, the account or workspace blocks attachments, OpenAI Status shows trouble, or you are actually debugging the API.
| What you see | Likely owner | First safe action | Stop rule |
|---|---|---|---|
| The button is missing or disabled | app, browser, account, workspace | try a fresh chat in a second browser or device | stop changing files until the button appears |
| The file is rejected | file type, file size, corrupted image | try a small static PNG/JPG under 20MB | stop clearing cache until a known-good file fails too |
| The upload starts but hangs | processing, network, service state | check OpenAI Status and try another network/device | stop repeated uploads if the same file fails everywhere |
| A limit, cap, or storage message appears | file-upload quota or Library storage | wait for reset, reduce attachments, or review stored files | stop upgrading plans until the exact limit surface is clear |
| API code fails but the ChatGPT app works | developer API image input | check model, request body, file_id/base64/URL, and project limits | stop using ChatGPT subscription status as API evidence |
If the same known-good image fails across a fresh chat, a second browser or device, and a clean status check, collect a screenshot, timestamp and timezone, platform, file type and size, account or workspace, and any request ID before contacting support.
Start With The Small Known-Good Image Test
The first useful test is not cache clearing, plan switching, or reading API docs. Use one small static PNG or JPG, keep it under 20MB, open a fresh ChatGPT conversation, and try to upload only that file. That single test tells you whether the current failure is probably the file, the local app/browser state, the account/workspace route, a service problem, or a developer API path.
OpenAI's ChatGPT image-input help lists common supported image formats as PNG, JPEG, and non-animated GIF, and the File Uploads FAQ also gives a 20MB image limit as of May 19, 2026. If a large HEIC, animated GIF, damaged file, tiny exported chart, or unusual screenshot fails but the known-good PNG works, repair the file branch instead of changing plans.
The known-good test also protects your upload quota. OpenAI's File Uploads FAQ says users can hit file-upload caps, Free users have a lower daily file-upload allowance, peak periods can reduce limits, and failed attempts can sometimes count. Because ChatGPT does not show a remaining file-upload counter, repeated blind attempts can make the evidence worse.
Separate The ChatGPT Surfaces Before You Fix Anything

The phrase "upload images to ChatGPT" hides several different product surfaces:
| Surface | What it owns | First diagnostic signal |
|---|---|---|
| ChatGPT Images editing | Uploading an existing image and asking ChatGPT to change it | the image is accepted, then editing or generation behavior matters |
| Image input for analysis | Adding an image so ChatGPT can inspect or reason about it | the image appears in the chat and can be discussed |
| General file upload | Attachment quota, file processing, file picker behavior, and plan/workspace limits | an upload cap, file error, or attachment failure appears |
| Library storage | Saved file/image storage in ChatGPT | storage warnings or Library management issues appear |
| Custom GPT or ChatGPT app | Tool-specific attachment support or workspace controls | normal chat works but the GPT/app does not |
| OpenAI Status | service health, upload processing, and incidents | the same failure repeats across accounts, devices, or files |
| OpenAI API image input | developer request shape, model support, file ID, base64, URL, project limits | code or HTTP responses fail while the ChatGPT app may still work |
OpenAI's Images in ChatGPT FAQ says users can upload an existing image and describe desired changes, but that does not mean every file, plan, workspace, app, quota state, or API request is identical. A ChatGPT app upload button and an OpenAI Platform API image request are different contracts.
For broader naming and route choice around ChatGPT Images 2.0 and gpt-image-2, use the separate ChatGPT Images 2.0 route guide. Stay here when the failure happens before the image is accepted by ChatGPT.
When The Upload Button Is Missing Or Greyed Out
A missing paperclip, image button, or attachment picker is usually not a file-format issue. The file has not reached ChatGPT yet. Treat the owner as app state, browser state, account/workspace state, feature availability, or a custom GPT/app constraint.
Run the checks in a fixed order:
- Open a new normal ChatGPT chat, not a custom GPT or shared project.
- Sign out and back in only if a fresh chat still lacks the attachment control.
- Try a second browser profile or private window with extensions disabled.
- Try the mobile app or web app, whichever you did not use first.
- If you are inside a work, school, Business, or Enterprise workspace, check whether the admin or GPT/app configuration restricts file attachments.
- Check OpenAI Status before assuming the account changed.
Do not start by resizing images when the button is absent. A valid 1MB PNG cannot fix a disabled picker. Do not start by upgrading either. Official Help pages describe broad image and file features across ChatGPT surfaces, but local workspace policy, rollout state, app version, and service health can still decide whether the upload path appears in your session.
When The Image File Is Rejected
A rejected file is the cleanest branch because the owner is often the file itself. Check four properties before changing anything else: size, format, animation, and corruption.
As of the May 19, 2026 evidence check, OpenAI Help gives 20MB as the image-size limit in both image-input and file-upload contexts. The ChatGPT image-input help names PNG, JPEG/JPG, and non-animated GIF for ChatGPT image input. API image-input docs are slightly different because developer image inputs can also use route-specific file IDs, URLs, base64 data URLs, and supported API formats, so do not merge the API table into the ChatGPT app branch.
Use this file repair sequence:
| File symptom | First repair | Why it works |
|---|---|---|
| File is over 20MB | export a smaller PNG or JPG | size is an official first-line failure point |
| HEIC, TIFF, SVG, PDF, or WEBP in the ChatGPT app | convert to PNG or JPG for the app test | supported app formats are narrower than all possible image files |
| animated GIF | export one still frame | ChatGPT image-input help specifies non-animated GIF |
| screenshot is accepted but unreadable | crop the relevant area and increase resolution | upload success does not guarantee useful image understanding |
| one file fails but another works | re-export the failed file | corruption or metadata can be the owner |
If the rejected image contains sensitive documents, private faces, financial records, health information, or customer data, do the file test with a harmless image first. The goal is to prove the branch, not to expose sensitive content while troubleshooting.
When Limits Or Library Storage Block The Upload

Limit messages deserve a slower response than local glitches because there may be no visible remaining counter. OpenAI's File Uploads FAQ says upload limits exist, Free users have a smaller daily file-upload allowance, caps can be lower during peak hours, and failed attempts can sometimes count. That makes repeated retry loops a bad diagnostic habit.
Library storage is a separate branch. OpenAI's File storage and Library article says Library storage is separate from daily attachment and chat limits, and that storage limits vary by plan. That means a user can hit storage pressure even when the daily attachment counter is not the same problem, or hit an upload cap even when stored files are not the owner.
Use the evidence instead of guessing:
| Evidence | Meaning | Better next move |
|---|---|---|
| ChatGPT shows a file-upload cap or daily limit | attachment quota is active | wait for reset or reduce file attempts |
| ChatGPT references storage, Library, or saved files | stored-file capacity may be the owner | review Library storage and remove unneeded files if appropriate |
| Many failed attempts happened first | failed attempts may have counted | stop retrying and wait before testing again |
| Only one workspace/account is blocked | entitlement or admin policy may be involved | compare personal/workspace routes without mixing evidence |
| No limit message, but the same image fails everywhere | not enough evidence for quota | check status and collect support data |
If the problem is image generation after the image has already uploaded, move to the ChatGPT image generation limit guide. Upload failure and generation cooldown are adjacent, but they are not the same failure.
When Browser, App, Device, Or Workspace State Owns It
Local state is likely when the known-good image works in one environment but not another. A browser extension can interfere with upload controls. A stale app build can fail to show a picker. Mobile permission settings can block file access. A VPN, proxy, privacy filter, or enterprise security layer can interfere with upload processing even when the file is valid.
Keep the isolation clean:
- Same file, same account, second browser.
- Same file, same account, second device.
- Same file, same account, another network.
- Same file, another allowed workspace or personal route if you have one.
- Only after that, clear cache or reinstall the app.
Clearing browser data can help a local branch, but it is not a universal fix. If a file is too large, cache clearing is noise. If a workspace blocks attachments, reinstalling the app is noise. If the service is degraded, switching browsers may only create one temporary pass and hide the incident pattern.
Custom GPTs and ChatGPT apps need their own check. A normal ChatGPT conversation may accept files while a specific GPT, project, connector, or app tool does not expose the same upload path. The Apps SDK file APIs also expect developers to feature-detect file-library behavior because it may not be available to every user or context. For a consumer user, the practical test is simple: compare normal ChatGPT against the custom GPT/app before blaming the file.
When Status Or Processing Is The Real Problem
OpenAI Status matters when the same known-good image fails across files, browsers, devices, and accounts. File uploads and newly uploaded file processing have had official incidents before, so a service-side branch is real even though the May 19, 2026 check showed OpenAI Status as operational.
Use the live OpenAI Status page at diagnosis time, not a saved memory of an old incident. If Status shows an active issue for ChatGPT, files, uploads, images, or APIs, wait and preserve your timestamp. If Status is green but the same small image fails in multiple clean environments, the evidence packet becomes more useful than another retry.
Good status evidence includes:
| Item | Why it matters |
|---|---|
| exact timestamp and timezone | separates rolling limits from incidents |
| platform and app version | distinguishes web, iOS, Android, and desktop behavior |
| file type and size | proves the file branch was tested |
| fresh-chat result | proves the conversation state is not the owner |
| second browser or device result | proves the local state branch was tested |
| workspace or account type | helps support distinguish entitlement and policy |
| request ID, if visible | gives support an internal lookup anchor |
The decision point is not whether one retry works. The decision point is whether the same known-good test fails broadly enough that local changes no longer explain it.
When It Is An API Issue Instead
Developer failures should move out of the ChatGPT app branch quickly. The OpenAI API can accept image inputs through URL, base64 data URL, or file ID depending on route and model support. API image inputs also have request-size, token, model, project, organization, and billing constraints that a ChatGPT Plus, Pro, Business, or Free subscription does not automatically solve.
Use the API branch when the failure appears in code, SDK logs, HTTP responses, server traces, or a provider wrapper. Do not use it when the ChatGPT web app button is simply missing.
| API evidence | Check |
|---|---|
| request body | URL, base64 data URL, or file ID is valid for the selected endpoint |
| model | the model supports the image input route being used |
| file ID | the uploaded file has the right purpose and format for that route |
| project and organization | the key belongs to the same project whose limits you are checking |
| error body and headers | the failure is access, quota, rate, request shape, or unsupported input |
| billing and limits | Platform account state matches the request volume |
If the topic is spreadsheet or document upload into image generation, use the GPT Image 2 CSV/Excel upload workflow. A workbook, PDF, or slide deck is a file, but it is not automatically an image input for every endpoint.
What To Send Support If It Still Fails

Contact support after you have ruled out the easy branches, not after fifty blind retries. The evidence packet should be short and reproducible:
| Evidence | Example |
|---|---|
| exact symptom | button missing, image rejected, upload stuck, cap message, storage warning |
| screenshot | include the full error or disabled control, not private content |
| timestamp and timezone | 2026-05-19 14:35 America/New_York |
| platform | web Chrome, web Safari, iOS app, Android app, desktop app |
| file test | small static PNG/JPG under 20MB failed or passed |
| account/workspace | Free, Plus, Pro, Business, school/workspace, custom GPT/app |
| status check | OpenAI Status green or affected at the time |
| cross-device result | same result on second browser/device or only one environment |
| request ID | include it if the interface or API response exposes one |
Keep the report factual. Avoid saying "ChatGPT removed image uploads" unless OpenAI actually says that for your product surface. Avoid saying "I need Plus" unless the current account evidence points to entitlement. Avoid saying "the API is down" when only the web app picker is missing.
FAQ
Why can't I upload an image into ChatGPT?
The most common owners are an invalid or oversized file, an exhausted file-upload cap, Library storage pressure, browser/app state, workspace or account restrictions, a service incident, or API-route confusion. Test one small static PNG or JPG under 20MB in a fresh chat, then use the visible symptom to choose the branch.
Is there a ChatGPT image upload limit?
Yes. OpenAI's File Uploads FAQ, checked on May 19, 2026, describes file-upload caps, a smaller Free daily file-upload allowance, possible peak-hour reductions, and the possibility that failed attempts count. It also says ChatGPT does not show remaining file-upload quota. Treat any exact number as freshness-sensitive.
What image file size can ChatGPT upload?
OpenAI Help pages checked on May 19, 2026 list 20MB for image uploads. Use a smaller static PNG or JPG as the diagnostic file before trying large photos, animated GIFs, screenshots with dense text, or unusual formats.
Why is the ChatGPT image upload button greyed out?
A greyed-out or missing button usually means the failure belongs to app state, browser state, account/workspace access, feature availability, or service health. Try a fresh normal chat, a second browser or device, and OpenAI Status before editing the image file.
What does max 0 uploads at a time mean?
Treat it as an upload-cap or account/workspace branch until proven otherwise. Stop repeated upload attempts, note the exact wording, wait for any reset if shown, and test later with one small known-good image. If it persists across browser/device/status checks, collect support evidence.
Can Free ChatGPT users upload images?
OpenAI's current Help pages describe image and file features across multiple ChatGPT surfaces, but access, caps, peak-hour behavior, workspace policy, and rollout state can differ. Use the in-product upload control and current Help pages as the source of truth for the active account rather than relying on an old Plus-only rule.
Does ChatGPT Plus fix image upload failures?
Not as a first fix. Plus may affect some product limits or feature availability, but it will not repair a bad file, a browser extension, full storage, workspace policy, OpenAI Status, or an API request-shape problem. Diagnose the branch before changing plans.
Why can I upload images on mobile but not desktop?
That points to browser/profile/extension/cache/network state on desktop, or to a difference between app surfaces. Keep the same known-good image and account, then compare a second browser profile, private window, mobile app, and network.
Why can ChatGPT generate images but not accept my uploaded image?
Image generation and image upload are related but separate surfaces. Generation can be blocked by cooldowns, policy refusals, long lockouts, or API 429s after an upload or prompt is accepted. Upload failure happens earlier: the file, picker, quota, storage, account, or service path blocks the image from entering the chat.
Do OpenAI API image inputs use the same rules as ChatGPT uploads?
No. API image inputs use developer routes such as URL, base64 data URL, or file ID, and the request must match model, endpoint, project, organization, billing, and payload limits. A ChatGPT subscription does not automatically change an OpenAI Platform project's API limits.



