ChatGPT Can't Upload Images? Separate Button, File, Count, Storage, and Status Problems
If ChatGPT can't upload an image, don't first keep clicking upload, clear all caches, or switch plans. Instead, in a fresh ordinary ChatGPT conversation, test a single static PNG or JPG under 20MB. This test isn't to prove image content — it's to decide who owns the problem: the button missing or gray, the file rejected, the upload spinning forever, a count or storage prompt, browser or mobile app differences, a workspace forbidding attachments, an OpenAI service anomaly, or the fact that you're actually calling the OpenAI API.
| What you see | More likely owner | First safe thing | When to stop |
|---|---|---|---|
| Upload button missing or gray | App, browser, account, workspace | Switch to a new ordinary conversation and a second browser/device | Stop editing the image before the button appears |
| File rejected right after selection | File format, size, animation, corruption | Switch to a static PNG/JPG under 20MB | Only investigate the environment after a known-good image also fails |
| Upload starts but spins forever | Network, processing, service state | Check OpenAI Status, then change network/device | Don't keep clicking when the same file fails everywhere |
| Count, quota, or storage prompt | File upload quota or Library storage | Wait for reset, reduce attachments, check storage | Don't upgrade before identifying the limit |
| Code errors but ChatGPT web works | OpenAI API image input | Check model, request body, file_id/base64/URL, project limits | Don't use the ChatGPT plan as API evidence |
If this known-good image still fails in a new conversation, a second browser or device, a clean network, and after a status check, the next step isn't trying dozens more times — it's saving the error screenshot, time and timezone, platform, file type and size, account or workspace, status-page result, and any request ID visible in the interface or API.
Start with a "Small-Image Test"
The most useful first step isn't clearing cache — it's narrowing variables. Prepare a small image with no private content, ideally an ordinary screenshot or a blank test image, saved as PNG or JPG under 20MB. Open a new ordinary ChatGPT conversation — not a custom GPT, project space, or third-party app — and upload that image alone once.
In the May 19, 2026 review, OpenAI's image-input help and file-upload help both list 20MB as the image upload limit; the image-input help also lists common formats like PNG, JPEG/JPG, and non-animated GIF. This only resolves the first layer: whether the file is clearly non-compliant. HEIC, TIFF, SVG, PDF, oversized WEBP, animations, and screenshots with odd metadata should never be the first test image.
The small-image test has another practical meaning: file upload counts may be limited, and failed attempts can sometimes count toward the cap. ChatGPT doesn't always show remaining quota, so repeatedly uploading the same large file makes troubleshooting worse. First prove "can the upload path work" with one plainly simple image, then return to the original file.
First Separate Which ChatGPT Surface It Is
Chinese-speaking users often treat "upload an image to ChatGPT" as one feature, but there are several distinct surfaces:
| Surface | What it handles | First signal to check |
|---|---|---|
| ChatGPT Images editing | Upload an existing image and ask for edits | The image entered the conversation; edit or generation issues come later |
| Image input analysis | Let ChatGPT look at, read, and interpret the image | The image appears in a message and can be discussed |
| Ordinary file upload | Attachment picker, processing, counts, plan/workspace limits | File errors, upload failures, quota prompts |
| Library storage | Space where ChatGPT keeps files and images | Storage or Library management prompts |
| Custom GPT or ChatGPT app | Whether a specific tool allows attachments | Normal chats upload; a specific GPT/App doesn't |
| OpenAI Status | Service health, upload processing, incidents | Multiple files, devices, or accounts fail at once |
| OpenAI API image input | URL, base64, file_id, model, and project limits | Errors in code, HTTP responses, or SDK logs |
If your problem happens before the image is accepted, stay in the upload-failure troubleshooting path. If the image already uploaded and the problem is throttled generation, long queues, or policy rejection, move to ChatGPT Image Generation Limit Guide. If you're comparing ChatGPT Images 2.0, gpt-image-2, and API routes, see ChatGPT Images 2.0 Route Guide.
The Upload Button Is Missing or Gray
When the button is missing, the file hasn't reached ChatGPT. Compressing, resizing, or re-exporting the image usually changes nothing. Treat the owner as an interface state, browser state, account/workspace permission, feature availability, a specific GPT/App limit, or service state.
Follow a fixed order without jumping around: open a new ordinary ChatGPT conversation; if the attachment button still isn't there, use another browser profile or incognito window with extensions temporarily disabled; then try the mobile app or web; if you're in a company, school, Business, or Enterprise workspace, confirm whether the admin or GPT config forbids file attachments; finally check OpenAI Status.
If only one custom GPT lacks the upload entry while normal chats upload fine, the conclusion isn't "ChatGPT can't upload images" — it's that this GPT, project, or app has different attachment capabilities. For developers, the file-library capability of ChatGPT apps also needs capability detection; for ordinary users, the simplest test is comparing against a normal ChatGPT conversation.
The Image File Is Rejected
A rejected file is the clearest branch, because the problem is usually in the image itself. Prioritize four things: size, format, animation, and corruption. Set the original aside and test with a known-good image. If the known-good image uploads, only then work on the original.
| File symptom | What to do first | Cause |
|---|---|---|
| Larger than 20MB | Export a smaller PNG/JPG | This is the first explicit limit in the official help |
| HEIC, TIFF, SVG, PDF, or uncertain WEBP | Convert to PNG/JPG for testing | ChatGPT app troubleshooting should use the most stable format |
| Animated GIF | Export a single static frame | Image-input help emphasizes non-animated GIF |
| Screenshot uploads but is unreadable | Crop irrelevant areas, raise key text resolution | Upload success isn't understanding success |
| Only one specific file fails | Re-export or strip odd metadata | Corruption and metadata often affect a single file |
Don't use images containing client data, ID documents, medical records, financial credentials, or private faces as the first test image. Troubleshooting only needs to prove the upload path; it doesn't need to expose sensitive content to the system or support.
Counts, Quotas, and Library Storage
When you see quota, count, cap, storage, Library, or "max 0 uploads" prompts, stop and record the original text. In the May 19, 2026 review, OpenAI's file-upload help states uploads have caps, Free users get fewer daily file uploads, limits may drop at peak times, and failed attempts can sometimes count toward the cap. Since ChatGPT doesn't always show remaining quota, blind retries burn troubleshooting space.
Library storage is another line. OpenAI's File storage and Library notes that Library storage is separate from daily attachment/chat limits, with caps varying by plan. That means you could hit storage pressure from too many saved files without exhausting daily uploads — or have plenty of storage while today's upload count is spent.
| Evidence | Meaning | Better action |
|---|---|---|
| Explicit upload count or daily limit | Attachment quota is active | Wait for reset, reduce attempts |
| Library or storage appears | Saved space may own the problem | Check and clean unneeded files |
| Many failures already | Failures may consume quota | Stop re-uploading; retest later with one small image |
| Only workspace accounts fail | Plan or admin rules may be involved | Don't mix personal-account and workspace evidence |
| No limit prompt but fails everywhere | Quota evidence insufficient | Check the status page and prepare support evidence |
Browser, App, Device, or Network Ownership
If the same small image fails in one environment and succeeds in another, the image usually isn't the problem. Browser extensions, stale cache, desktop or mobile permissions, app versions, VPN, proxies, corporate security gateways, and privacy filters can all interfere with the attachment picker or upload processing.
Keep variables singular when troubleshooting: same image, same account, second browser; same image, same account, second device; same image, another network; if you have both personal and workspace accounts, compare the two allowed routes. Only after these comparisons should clearing cache, reinstalling the app, or disabling extensions make sense.
Don't treat every local fix as a universal solution. If a file exceeds 20MB, clearing cache is noise; if a workspace disables attachments, reinstalling the app is noise; during a server-side outage, switching browsers may succeed once while hiding the incident evidence.
Account, Workspace, and Custom GPT Limits
ChatGPT personal accounts, Plus/Pro, Business, Enterprise, school workspaces, custom GPTs, project spaces, and app tools don't necessarily expose the same upload entry. One environment uploading doesn't prove another allows it.
Ask three questions: can a new ordinary conversation upload? Is the same account consistent across devices? Do other permitted users in the same workspace see the same problem? If ordinary chats work but a specific GPT or project doesn't, investigate that tool's configuration first. If only company or school workspaces fail, look for admin rules or data-control settings — don't write it as a site-wide outage.
The plan also can't be the first explanation. Plus may affect some features or quotas, but it can't fix a bad file, a browser extension, full storage, a disabled workspace, a service anomaly, or an API request-body error. Confirm the failure owner first, then decide whether a plan change is needed.
OpenAI Status and Processing Anomalies
Service status is most convincing when "the same known-good image fails across files, browsers, devices, or accounts." OpenAI has had official incidents affecting file uploads and processing of newly uploaded content, so the server-side branch is real. But status is real-time information; you can't use old memories to decide whether today works.
Open OpenAI Status during diagnosis. If the status page shows ChatGPT, files, uploads, images, or APIs issues, keep the timestamp and wait for recovery. If status is normal but your same small image fails across clean environments, support evidence is worth more than continued retries.
Support evidence should include: exact time and timezone, platform and app version, file type and size, new-conversation result, second browser or device result, account or workspace type, status-page result, and any request ID visible in the interface or API response.
If It's Actually an API Problem
Developers should leave the ordinary ChatGPT app branch quickly. The OpenAI API image input can use a URL, base64 data URL, or file ID, depending on endpoint and model support. The API also involves request size, tokens, model, project, organization, billing, and limits; the web subscription state of ChatGPT Plus, Pro, Business, or Free can't directly prove API project permissions.
| API evidence | What to check |
|---|---|
| Request body | Whether URL, base64, or file ID matches the current endpoint |
| Model | Whether the chosen model supports image input |
| file ID | Whether the file's purpose, format, and project match |
| Project/organization | Whether the API key belongs to the project you're checking limits for |
| Error body and headers | Permission, quota, rate, request shape, or unsupported input |
| Billing and limits | Whether the Platform project state supports the current request volume |
If your task is turning CSV, Excel, PDF, or documents into image prompts or image-generation pipelines, enter the GPT Image 2 CSV/Excel Upload Workflow. A workbook is a file, but it isn't an image that every image-input endpoint understands automatically.
What to Send Support If It Still Fails
Narrow the evidence before contacting support. A good report doesn't need a long complaint — it needs to let someone reproduce: specific symptom, full error screenshot, time and timezone, platform, test image info, account/workspace, status-page result, cross-device comparison, request ID.
| Evidence | Example |
|---|---|
| Specific symptom | Gray button, rejected image, stuck upload, quota prompt, storage prompt |
| Screenshot | Includes the full error or gray control; avoid private content |
| Time and timezone | 2026-05-19 14:35 America/New_York |
| Platform | Chrome web, Safari web, iOS, Android, desktop |
| File test | Static PNG/JPG under 20MB failed or succeeded |
| Account/workspace | Free, Plus, Pro, Business, school/company, custom GPT |
| Status check | OpenAI Status was normal or affected at the time |
| Cross-device result | Second browser/device also failed, or only one environment failed |
| request ID | Include if visible in the interface or API response |
Don't say "ChatGPT removed image upload" unless OpenAI explicitly said so for your surface. Don't say "you must buy Plus" unless the current account evidence really points to plan permissions. Don't say "the API is down" if only the web upload button is missing.
Retest Order and Misjudgment Boundaries
Writing all actions into one short log locates problems faster. Line one records the test file: PNG/JPG, size, static or not, sensitive content or not. Line two records the product surface: ordinary new ChatGPT conversation, custom GPT, project space, mobile app, desktop browser, or API. Line three records comparisons: second browser, second device, another network, OpenAI Status. The value is avoiding mistaking a one-off success for a fix, and avoiding judging a workspace rule as a site-wide outage.
There are three most common misjudgments. First, compressing the image when the button is gray; if the file picker never opened, the image itself isn't involved yet. Second, continuing to check file upload after upload succeeded but generation failed; that's already the image-generation, policy, or rate-limit branch. Third, upgrading ChatGPT when the API errors; an API project's model, billing, request body, and organization limits aren't proven by the chat page's subscription button.
In a team environment, keep personal and workspace accounts separate. A personal account uploading only proves the public ChatGPT route works; a workspace may still forbid attachments due to admin, data control, GPT config, or compliance rules. Conversely, a workspace uploading doesn't mean a personal account hasn't hit its daily file-upload cap. Support needs these boundaries, not a single "it doesn't work here."
Finally, keep one low-risk test image. Every time you face "ChatGPT can't upload images," retest with it instead of starting with a new large image or a real client image. A stable test sample separates product-state changes from file problems, and reduces the upload quota that failed attempts might consume.
One more practical boundary: don't treat "the image uploads but ChatGPT didn't understand it as expected" as an upload failure. After a successful upload, the problem may become image resolution, cropping, prompt, visual understanding, or safety policy. At that point improve the image's readability and the question — don't keep checking the button, quota, or Library. Only when the file never enters the conversation, errors immediately after entering, or processing hangs does it still belong to upload troubleshooting.
If you forward conclusions to a colleague, write them in five parts: symptom, test image, comparison environment, status page, next step. That way others won't restate your browser problem as a platform problem, or mistake a quota exhaustion for an account ban. A short record beats a pile of screenshots.
Change only one variable when retesting, and keep the original error text and screenshots.
FAQ
Why can't ChatGPT upload images?
Common owners include a file too large or wrong format, file-upload count exhausted, Library storage pressure, browser or app state, workspace/account limits, a service anomaly, or mixing up the OpenAI API and ChatGPT web. First test a static PNG/JPG under 20MB in a new conversation, then branch on the visible symptom.
Is there an image upload size limit in ChatGPT?
Yes. The OpenAI help page lists a 20MB image limit as verified on May 19, 2026. When troubleshooting, start with a smaller PNG or JPG rather than large photos, animations, dense-text screenshots, or special formats.
Why is the upload image button gray?
A gray or missing button is usually not a file format problem — it's an app, browser, account, workspace, feature-state, or service-state problem. First try a new ordinary conversation, a second browser or device, then check OpenAI Status.
How should I handle "max 0 uploads at a time"?
Treat it as an upload-quota, account, or workspace branch first. Stop re-uploading, record the original text and time, then retest with one small image later. If it still fails across browsers, devices, and status checks, compile support evidence.
Can Free users upload images?
OpenAI's current help pages describe multiple ChatGPT image and file surfaces, but actual entries, quotas, peak-hour limits, workspace rules, and regional/account states may differ. Follow the current product interface and official help pages; don't just apply old Plus-only claims.
Will upgrading to Plus fix it?
Don't use it as the first fix. Upgrading may affect some quotas or feature availability, but it won't fix a bad file, a browser extension, full storage, a disabled workspace, a service anomaly, or an API request-body error.
Phone works but computer doesn't — what now?
This usually points to desktop browser, extension, cache, permission, network, or app surface differences. Keep the same small image and the same account, and compare a second browser, incognito window, mobile, and network.
Are "can generate images" and "can't upload images" the same limit?
No. Generation limits occur after the prompt or image enters the system; upload failures happen earlier on the file, button, quota, storage, account, or service path. First check whether the image actually entered the conversation.
Do API image input and ChatGPT upload rules differ?
Yes. API image input uses URL, base64, or file ID, and is governed by model, endpoint, project, organization, billing, and request limits. A ChatGPT subscription can't automatically change API limits for an OpenAI Platform project.