---
title: Troubleshooting
description: Common questions and the fastest path to a fix. Each entry names
  the symptom in search-style language and points to the canonical page for the
  full mechanic.
subtitle: Common questions and the fastest path to a fix.
sidebar:
  order: 100
  section: Reference
canonical_html_url: https://eb.app/learn/troubleshooting/
---

# Troubleshooting

This page is a lookup table for the questions that come up most often. Each entry states the symptom, the cause in one or two sentences, and a sequence of taps to fix it. Where the underlying mechanic is documented in detail elsewhere, the entry links to the canonical paragraph.

If your situation is not on this page, the linked feature pages cover the rest. Every page has a Related pages section at the bottom.

---

## My account balance in the app does not match my bank

The bank's number is the canonical balance. The app's running balance can drift if a transaction landed at the bank that has not been recorded in the app, or if a transaction in the app was reversed at the bank.

You have two ways to bring them back in line.

**Re-anchor by editing Current Balance.** Open **Setup**, **Accounts**, tap the account, change **Current Balance** to whatever your bank shows now, save. Fast, and the running total continues from the new number.

**Find the missing or duplicate transaction.** Open the **Planner** tab, tap the event the transaction belongs to, scroll to the **Transactions** section in the **Edit Item Event** dialog, and add or remove the transaction.

The full mechanic is on [Accounts](https://eb.app/learn/accounts.md#when-the-app-and-your-bank-disagree), with cross-references to [Transactions](https://eb.app/learn/transactions.md) for editing transactions inside an event.

---

## I tapped Mark Event as Paid but the event is still on the planner

That is what **Mark Event as Paid** is for. It flags the event with a checkmark on the planner so you remember the bill went out, while the bank catches up. The button is a toggle: tap it again to flip back to Scheduled. It does not move your account balance, and it does not move the event off the planner.

To take the event off the planner, you have three options:

- Wait for the bank transaction to land. The next time you tap **Match**, the **Match Transactions** dialog matches it with the event and resolves the event for you.
- Tap **Resolve item** in the right toolbar. The event closes and moves to the History tab.
- Open the event with **Edit Event**, change **Status** to `Resolved`, save.

Full lifecycle on [Matching and Resolving](https://eb.app/learn/matching-and-resolving.md#the-three-states-of-an-event).

---

## I resolved the wrong event

Open the **History** tab. Find the row, tap it, then tap **Undo Action** in the toolbar.

The Undo dialog opens. Its title reads `Undo Resolution of {item name}`. Below the heading, the dialog tells you what is being restored and what happens to your account balance. If the resolved event had no transactions filed against it, you see a **Reverse Balance Change** toggle (on by default). If transactions are attached, the dialog shows an Account Balance note instead, because the transactions already moved the balance when they were added and there is nothing extra to reverse.

Tap **Undo** to confirm. The event returns to the planner with whatever transactions and customizations it had at the time it left.

Full mechanic on [History and Undo](https://eb.app/learn/history-and-undo.md#undoing-a-row).

---

## A transaction landed but no event matched it

When you run **Match**, the matcher shows one of three messages instead of opening the review screen if it cannot produce usable matches.

- **No Matches Found.** The new transactions could not be paired with any open event. Add the missing item under **Setup**, **Items**, then run Match again.
- **No New Transactions.** Every transaction has already been processed. Tap the **Match All Transactions** button on the dialog to re-run the match against transactions you skipped earlier.
- **Hash Verification Failed.** This message only appears on the **Bring Your Own AI** path. The AI you used returned hash values that do not match your file, usually because the AI invented or rewrote them. Regenerate the prompt with the same file and ask the AI to copy the hash values exactly as shown.

Full mechanic on [Matching and Resolving](https://eb.app/learn/matching-and-resolving.md#when-nothing-matches).

---

## My bank connection broke

Open **Settings** and find the **Linked Accounts** card. The bank that needs attention shows a primary **Reconnect** button on the right of its row.

Tap **Reconnect**. Plaid opens with the bank pre-selected; sign in again. The Reconnect button goes away once the bank is healthy, and pulls resume the next time you tap **Match** on the planner toolbar.

<!-- SCREENSHOT: Linked Accounts card with one bank that needs reauth. The bank's row shows a primary "Reconnect" button on the right next to the red trash icon. -->

Full mechanic on [Bank linking](https://eb.app/learn/bank-linking.md#when-a-connection-breaks).

---

## Reconnect did not fix it, or the app says the bank cannot be reconnected automatically

If you revoked the app's access at your bank's website (rather than letting the session expire), Plaid no longer recognizes the original connection at all. Tapping **Reconnect** surfaces a yellow toast: `This bank can't be reconnected automatically. Tap the trash icon to disconnect it, then tap the plus icon to add it again.`

The fix is the two-step path the toast describes: open **Settings**, **Linked Accounts**, tap the trash icon on the bank's row, confirm **Disconnect**, then tap the **+** at the top right of the card and link the bank again from scratch. Existing transactions in your budgets are not affected; only future pulls were paused while the bank was disabled.

Full mechanic on [Bank linking](https://eb.app/learn/bank-linking.md#when-reconnect-cant-fix-it).

---

## The Match button is grayed out or missing

Two things gate the **Match** button on the planner toolbar.

- **You are an editor without Premium.** The budget owner can use Match without Premium. An editor on a shared budget needs Premium themselves. When the gate triggers, the button label changes to `Requires premium or owner access`.
- **There are no events on the planner.** With nothing to match against, the button is disabled. Add at least one item under **Setup**, **Items** so the planner has events.

If the budget is linked to a bank through Plaid and you are no longer on Premium, the Match button is hidden entirely (not just disabled), since Plaid pulls require Premium.

For Premium tiers, see [Subscription](https://eb.app/learn/subscription.md). For the matching gate, see [Matching and Resolving](https://eb.app/learn/matching-and-resolving.md#who-can-use-match).

---

## A Reports total disagrees with the planner

Open the **Reports** tab. The toolbar has a date-range navigator in the center and a period picker (tap the date range to switch between **Weekly**, **Pay Period**, **Monthly**, **Quarterly**, and **Yearly**).

Two common reasons the totals do not match:

- **Different period.** The Reports tab keeps its own period choice, separate from your sense of "this month" on the Planner. Confirm the period and the date range match what you are comparing against.
- **The Reports total includes resolved events at their actual amount.** On Cash Flow Bar Chart, Flow Diagram, and All Expenses by Category, a resolved event uses the amount it actually closed at (the sum of its transactions, or the planned amount when it was resolved without transactions), drawn with a diagonal stripe pattern. The Planner's planned total uses the planned amount.

Full mechanic on [Reports](https://eb.app/learn/reports.md#how-resolved-events-appear).

---

## I cannot make my budget public

Five conditions block making a budget public. The Edit Budget dialog tells you which one applies.

1. **Free account.** Publishing requires Premium.
2. **No username.** The dialog header reads `Username Required` with a **Create Username** button. Set a username from your profile, then come back to Edit Budget.
3. **Not the owner.** The Access Level selector is read-only for editors and viewers.
4. **The budget is currently in Shared mode.** The **Public** option is hidden until you switch to **Private** first. Switching to Private revokes everyone's direct access in one step (the dialog names how many people are affected).
5. **The budget has Plaid lineage.** A budget that ever held bank-imported data cannot be made public, even after you disconnect the bank. The Access Level selector shows the alert `Cannot Make Public` with the body `This budget contains bank data imported from Plaid and cannot be made public due to legal restrictions.`

Full mechanic on [Public Budgets](https://eb.app/learn/public-budgets.md#rules-that-block-publishing).

<!-- SCREENSHOT: Edit Budget dialog with the Access Level selector disabled. A short note below the selector reads "This budget contains bank data imported from Plaid and cannot be made public." -->

---

## The Reports tab is missing a recent transaction

Two common reasons:

- **No bank pull or manual entry has run since the transaction landed.** Bank pulls are user-triggered. On a Plaid-linked budget, tap **Match** on the planner toolbar to pull anything new. On a manual budget, open the event in the planner and add the transaction inside the **Edit Item Event** dialog.
- **The transaction landed in a different period.** The Reports period defaults to the period that contains today. Use the arrows in the date-range navigator to step back or forward.

If neither helps, open the event on the planner. If the transaction is in the **Transactions** section there, the Reports view will show it the next time you switch periods or refresh the chart.

Full mechanic on [Reports](https://eb.app/learn/reports.md#the-time-period-and-the-date-range-navigator) and [Bank linking](https://eb.app/learn/bank-linking.md#what-gets-imported-when).

---

## I undid something and now my balance looks wrong

The Undo dialog handles the balance side automatically. If the resolved event had transactions attached, the dialog never shows a **Reverse Balance Change** toggle, because the transactions are restored as active and keep their original effect; nothing extra is reversed. If the resolved event had no transactions, the dialog shows the toggle on by default and reverses the planned-amount adjustment when you confirm.

If the number still looks wrong after the undo, the cleanest fix is to re-anchor: open **Setup**, **Accounts**, tap the account, change **Current Balance** to what your bank shows, save. The running total continues from the new number.

Full mechanic on [History and Undo](https://eb.app/learn/history-and-undo.md#a-resolved-row-with-transactions-filed-against-it) and [Accounts](https://eb.app/learn/accounts.md#when-the-app-and-your-bank-disagree).

---

## Undo was rejected with a "Bank transactions have been matched to other events" message

This is the one undo failure mode the **Undo Action** button cannot detect ahead of time. It only happens when you delete an event that had bank-imported transactions on it, and one of those transactions has since been re-matched to a different event. The undo confirms, the server checks, and the dialog comes back with the message above. The History row stays in place; nothing is damaged.

Open the other event that now holds the conflicting transaction, remove the transaction from there, then return to the History tab and try the undo again. The block exists so a single real-world transaction cannot sit under two events at once.

Full mechanic on [History and Undo](https://eb.app/learn/history-and-undo.md#the-button-is-enabled-but-the-undo-fails).

---

## A theme I picked is not applying

Themes are stored on the budget, not on your user account. Confirm you are looking at the budget you applied the theme to.

To pick a theme: open the **Budgets** page, select the budget, tap **Edit Budget**, tap the **Theme** row, then pick from **My Themes** or **Community**. The picker closes when you tap a theme; the budget shows the new colors immediately.

Published themes cannot be edited or deleted, including by you. To make a tweaked version of a theme you have already published, **Download Theme** from the Community tab and use **Restore Theme** on **My Themes** to bring it back as a new local theme you can edit.

Full mechanic on [Themes and Icons](https://eb.app/learn/themes.md#picking-a-theme).

---

## AI Theme Generation says Subscribe to Premium

When Premium ends, the AI Generated tab in the **New Theme** dialog stays visible, but Integrated AI shows a Subscribe to Premium prompt instead of generating. The Bring Your Own AI path keeps working: switch the AI mode toggle to **Bring Your Own AI**, copy the generated prompt into the AI tool you already use, and paste the response back. Free, but with a copy-and-paste step.

Already-saved themes in your library are unaffected, and the manual color editor stays open on every plan.

Full mechanic on [Themes and Icons](https://eb.app/learn/themes.md#what-changes-if-premium-ends).

---

## Cannot Delete on a theme that is in use

If the theme you are trying to delete is currently applied to one or more budgets, the **Theme In Use** dialog opens before the regular delete confirmation. The header reads `Cannot Delete`, lists the budgets that use it, and offers two paths:

- **Download Backup First.** Saves the theme to a `.json` file before deleting. Use this if you might want it back later. Restore Theme on **My Themes** brings it back as a new theme.
- **Delete Anyway.** Force-deletes the theme; the affected budgets fall back to the default theme.

A **published** theme cannot be deleted at all; the toolbar shows `Cannot delete revoked theme` (or the equivalent for a published theme) and the button is disabled. Same goes for a revoked theme: once you give up edit access, delete is off the table too. The same rules apply to icon sets via **Icon Set In Use**.

Full mechanic on [Themes and Icons](https://eb.app/learn/themes.md#deleting-a-theme-or-icon-set).

---

## My Picks tab is grayed out and won't open

A brand-new budget shows the Picks tab in the bottom bar, but it stays disabled until the budget has at least one account, at least one category, and at least one item. This is the same gate that keeps **Planner** and **Reports** disabled on a new budget.

Once you finish those three setup steps under **Setup**, the Picks tab activates and loads its first set of cards. If the page still says `No picks yet. Add more items to your budget to see personalized picks.`, the budget probably has no Expense categories. Picks builds its list only from expense categories and the items in them, so a budget made up of paychecks and transfers has nothing for it to work from.

Full mechanic on [Picks](https://eb.app/learn/picks.md#why-the-tab-is-disabled).

---

## My Picks tab is missing even though I am Premium

The Picks tab is hidden by default for Premium subscribers. The toggle is on the **Premium Settings** card on the Settings page; tapping **Settings** in the hamburger menu and switching off **Hide Picks Tab** brings the tab back into the bottom bar. The setting is per account and follows you across devices.

Free-plan users always see the Picks tab and have no toggle for it.

Full mechanic on [Picks](https://eb.app/learn/picks.md#showing-the-tab-on-premium).

---

## Discover shows "No featured content yet" or "No featured icons today"

Discover ranks community work by likes, not by recency or downloads. Items the community has never liked do not appear, even brand-new ones. The empty state `No featured content yet. Be the first to create and share!` only renders when nothing in the entire community has any likes; once one item anywhere has been liked, the relevant group appears.

A more common case is that the **period** you are looking at is empty. **Today** can be empty for icons even when **This Year** has many entries, since Today is the rolling last 24 hours. Switch to a wider window with the period buttons (`Today`, `This Week`, `This Month`, `This Year`) to see more.

Full mechanic on [Discover](https://eb.app/learn/discover.md#when-discover-is-empty).

---

## A sharing invite I sent has not been accepted

If the email belongs to someone who has not signed up yet, the invitation is pending. They have to sign up with the email you invited before they can accept.

In the meantime, the row in your Sharing section shows a clock icon (rather than a green checkmark). To resend, tap the trash icon on the pending row, confirm `Cancel Invitation`, then add the invite again. That is also the path if the email was mistyped or the original notification was lost.

Full mechanic on [Sharing a Budget](https://eb.app/learn/sharing.md#inviting-someone).

---

## "Rate limit exceeded" when I try to invite someone

You hit the per-budget invitation cap: 10 invitations per budget per hour, including invites you later cancel. The cap is keyed on the budget, not on you, so it stops a paste-the-wrong-list mistake from spamming twenty inboxes; it is far higher than any normal household or team would hit.

Wait the hour out, then resume inviting. The cap does not apply to permission changes, revocations, or accepting invites; only to new invitations.

Full mechanic on [Sharing a Budget](https://eb.app/learn/sharing.md#if-you-hit-the-invite-limit).

---

## Promote to Owner was rejected

Promoting a collaborator to Owner only succeeds if that person also has a Premium subscription. The frontend lets the picker change optimistically, then the server rejects the promotion if the target is not on Premium and the dropdown reverts. A toast explains what happened.

The reason: an owner without Premium would lose ownership privileges as soon as their non-existent subscription ended. There is no "promotion request" that waits for them to upgrade; either they are Premium when you promote, or you ask them to upgrade first.

Full mechanic on [Sharing a Budget](https://eb.app/learn/sharing.md#owner).

---

## A viewer of my public budget cannot tap Mark Event as Paid

Public-budget viewers have read-only access. Add-transaction, Edit Event, **Mark Event as Paid**, **Resolve item**, and Undo are all disabled for them. They can browse the budget, see the running balances, and add it to their own list, but they cannot change anything.

If you want them to be able to edit, switch the budget to **Shared** mode and invite them by email with **Can Edit** permission instead. (Public and Shared are mutually exclusive: a public budget cannot also have direct shares.)

Full mechanic on [Public Budgets](https://eb.app/learn/public-budgets.md#what-people-who-added-the-budget-can-do).

---

## I deleted an account by mistake

Deleting an account is irreversible. The **Delete Account** dialog lists what will be removed (the account, its items, their schedules, the planned events on those items, and the transactions still planned against them) and ends with the warning `This action cannot be undone`.

Resolved entries already in **History** stay where they are, with the account name and amount snapshotted, but their **Undo Action** button no longer works once the account is gone.

The only recovery path is to add the account back with the same starting balance and re-add the transactions you want. The other accounts in the budget are unaffected.

Full mechanic on [Accounts](https://eb.app/learn/accounts.md#deleting-an-account).

---

## A Transfer item disappeared when I deleted one of its accounts

A Transfer item references two accounts, a **From Account** and a **To Account**. Deleting either side removes the whole Transfer item, even though the other side is an account you are keeping. The Delete Account dialog lists this in its impact summary before you confirm.

Past History rows from the Transfer are preserved, with their snapshots of the From and To account names; only the future events disappear. To continue a recurring transfer against a different destination, recreate the Transfer item against a new account before or after the delete.

Full mechanic on [Accounts](https://eb.app/learn/accounts.md#transfer-items-and-account-deletion).

---

## I changed a schedule's timing and lost the per-event customization I had made

Changing a schedule's **frequency**, **dates**, **weekdays**, **start date**, or **end date** is a stronger edit than changing the amount or the name. It discards every per-event override on that schedule (a one-month amount change, a moved date, transactions still pending), because the underlying schedule no longer matches the events those overrides were attached to. The form warns you with a yellow note before you save, so you can step back if you want to keep the override.

Changing the parent item's name, category, account, or amount does not touch your per-event overrides. Those only get cleared by a timing change on the schedule itself.

Full mechanic on [Items](https://eb.app/learn/items.md#editing-a-single-occurrence-on-the-planner).

---

## "Monthly budget creation limit reached" even though I deleted a budget

The cap is on **net new creates** for the calendar month, not the total number of budgets you keep. The math is "creates minus deletes for this calendar month, never below zero." A budget you delete from an earlier month does not free a slot in the current month; only deleting a budget you created this month opens up another slot.

For example, on the free plan you can create three budgets in May, hit the cap, then delete one of those three to read "2 of 3 used" and create another one in May. Deleting a budget you created back in March does not affect May's counter.

The cap resets at the first of the next calendar month: 3 per month free, 10 per month Premium.

Full mechanic on [Budgets](https://eb.app/learn/budgets.md#how-many-budgets-you-can-create).

---

## Restore Backup says the file isn't a backup

The Restore Backup dialog only accepts the `.json` files this app produces with **Create Backup**. If you try to drop a CSV from your bank onto the dialog, it tells you to use the AI budget creation flow instead, which lives on the **Create Budget** dialog under the **AI Generated** mode.

If you have a backup `.json` that was downloaded from this app and the dialog still rejects it, the file may have been edited by another tool and lost its structure. Re-run **Create Backup** on the source budget if you still have it; otherwise the safer path is to start a fresh budget and re-enter the items.

Full mechanic on [Your Account](https://eb.app/learn/account.md#restoring-a-budget).

---

## "Monthly profile update limit reached" when I try to change my username

There is a generous monthly cap on username changes: 100 per calendar month, well above what any normal user would hit. When you reach it, the **Edit Profile** button shows `Monthly profile update limit reached. Please try again next month.` until the calendar rolls over.

Renaming your username breaks an old `/profiles/{old-username}` bookmark, but it does not invalidate any public-budget share link you have already sent (those are keyed by the budget itself, not the username).

Full mechanic on [Your Public Profile](https://eb.app/learn/profile.md#when-your-username-changes) and [Your Account](https://eb.app/learn/account.md#profile-and-username).

---

## My xlsx file from Excel won't upload

The file-upload path accepts plain-text formats only: `.csv`, `.tsv`, and `.txt`. Excel files are binary and the parser cannot read them.

Open the file in Excel or Numbers, choose **Save As** (or **Export**), pick **CSV**, and upload the CSV. The conversion is lossless for transaction data, so nothing is lost in the round trip.

Full mechanic on [File Uploads](https://eb.app/learn/file-uploads.md#supported-file-formats).

---

## The Match Review screen shows fewer transactions than my CSV had rows

Rows the parser cannot read are dropped quietly during parsing: a row with a missing date, a missing description, or an unreadable amount does not surface as an error, but it also does not appear on the Review screen. The count on the **Review Transaction Matches** screen is the source of truth, not the row count in the file.

If a lot of rows are missing, the file may have an unusual layout. Open it in a spreadsheet, check that every row has a date, a description, and an amount, and re-export. The parser also handles the easy variations (different separators, day-first dates, two-column debit/credit, parenthetical negatives) without any prep.

Full mechanic on [File Uploads](https://eb.app/learn/file-uploads.md#when-a-file-cant-be-read).

---

## Quick reference

| Symptom | Cause | Fix |
|---------|-------|-----|
| Balance disagrees with the bank | A transaction the app does not have, or vice versa | Re-anchor **Current Balance** on the account, or find the missing transaction |
| Event still on the planner after Mark Event as Paid | That is the toggle's design | Tap **Resolve item**, or wait for the bank transaction to match |
| Resolved the wrong event | Almost every resolve is undoable | History tab, **Undo Action**, confirm |
| Bank connection stopped pulling | The bank session expired | Settings, **Linked Accounts**, **Reconnect** |
| Reconnect won't work | Access was revoked at your bank | Disconnect, then re-add the bank from scratch |
| Match button greyed out | Editor without Premium, or no events on the planner | Premium for editors, or add an item first |
| Cannot make budget public | One of five conditions | The Edit Budget dialog names which condition applies |
| Reports total differs from the planner | Different period, or resolved events use actual amount | Match the period in the date-range navigator |
| Theme did not apply | Picked on a different budget | Open the right budget, Edit Budget, Theme row |
| AI Theme Generation gated | Premium has ended | Switch to **Bring Your Own AI** in the New Theme dialog |
| Theme cannot be deleted | Theme is in use, published, or revoked | **Theme In Use** dialog offers Download Backup First or Delete Anyway |
| Picks tab disabled | New budget without setup | Add at least one account, one category, one item |
| Picks tab missing on Premium | Hide Picks Tab is on by default | Settings, **Premium Settings**, switch off Hide Picks Tab |
| Discover empty | Items need at least one community like to appear | Try a wider period, or wait for likes |
| Sharing invite not accepted | Recipient has not signed up yet | They sign up with the invited email, or you cancel and re-invite |
| Rate limit on invites | 10 per budget per hour, cancelled invites count | Wait the hour out |
| Promote to Owner rejected | Target is not on Premium | Ask them to upgrade, then promote again |
| Transfer item gone after account delete | Both sides of a Transfer are required | Recreate the Transfer item against a different account |
| Schedule timing change wiped overrides | Frequency, dates, or start/end edits clear per-event overrides | Re-apply the overrides, or step back via the warning |
| `Monthly budget creation limit reached` | 3 per month free, 10 per month Premium, on net creates | Wait for the next calendar month, or upgrade |
| Restore Backup rejected file | The dialog only accepts `.json` files this app produced | For a CSV, use **Create Budget**, **AI Generated** instead |
| Username change limit reached | 100 per calendar month | Wait for the next calendar month |
| `.xlsx` rejected | Parser is text-only | Save the Excel file as CSV, then upload |
| Review count is less than file rows | Rows with missing fields are skipped quietly | Check the file for blank dates, descriptions, or amounts |
| Undo failed after confirm | Bank lines were re-matched to a different event | Remove the conflict on the other event, retry undo |

---

## Related pages

- [Accounts](https://eb.app/learn/accounts.md): the **Current Balance** field and how to keep it in step with your bank.
- [Matching and Resolving](https://eb.app/learn/matching-and-resolving.md): the Match Transactions dialog, the Resolve flow, and the three states an event passes through.
- [History and Undo](https://eb.app/learn/history-and-undo.md): the Undo dialog and the **Reverse Balance Change** toggle.
- [Bank linking](https://eb.app/learn/bank-linking.md): connecting a bank, reconnecting when a session expires, and what happens when Reconnect can't fix it.
- [Public Budgets](https://eb.app/learn/public-budgets.md): the five conditions that block publishing.
- [Sharing a Budget](https://eb.app/learn/sharing.md): inviting people, the three permission levels, and pending invitations.
- [Reports](https://eb.app/learn/reports.md): the period picker, resolved events with the diagonal stripe pattern, and per-chart settings.
- [Themes and Icons](https://eb.app/learn/themes.md): per-budget theme picking, publishing rules, and the **Theme In Use** delete flow.
- [Picks](https://eb.app/learn/picks.md): why the tab is disabled on a new budget, and how to switch it on as a Premium subscriber.
- [Discover](https://eb.app/learn/discover.md): the four rolling periods and the like-based ranking.
- [Items](https://eb.app/learn/items.md): schedule edits and the per-event override rule.
- [Budgets](https://eb.app/learn/budgets.md): the per-month creation cap and how deletes free slots.
- [Your Account](https://eb.app/learn/account.md): backups, restores, and the username change limit.
- [Your Public Profile](https://eb.app/learn/profile.md): username changes, profile URL, and visibility toggles.
- [File Uploads](https://eb.app/learn/file-uploads.md): supported formats and what the parser tolerates.

---

## About this document

This is a markdown mirror of [https://eb.app/learn/troubleshooting/](https://eb.app/learn/troubleshooting/).
The HTML version is the canonical form. This file exists so AI/LLM
tools can ingest the content without HTML parsing.
