How to detect and remove hidden and veryhidden sheets from excel workbooks
- Step 1Open the Hidden Sheet Destroyer and drop your workbook — Drag an
.xlsxonto the tool above. The file picker accepts.xlsx,.xls, and.ods. ExcelJS reads the file into an ArrayBuffer in your browser — nothing is uploaded. This tool requires the Developer tier. - Step 2Run Mode → List only first — Leave the Mode dropdown on its default,
List only (no changes). The output is a three-line text report:Visible sheets (N): ...,Hidden sheets (N): ...,VeryHidden sheets (N): ..., each listing the sheet names. This is read-only — no download is produced. - Step 3Review the sheet names against what you expect — Sheet names alone (
Lookup_Table,Salaries,Config,Sheet3) are usually enough to tell what is safe to remove. The tool does not preview cell contents — if a name is ambiguous, open the workbook in Excel (or use a formula/dependency tool) to inspect before deleting. - Step 4Pick the deletion mode that matches your intent —
Delete hidden sheetsremoves onlystate: hiddensheets.Delete VeryHidden sheetsremoves onlystate: veryHiddensheets.Delete all hidden + VeryHiddenremoves both. Visible sheets are never touched by any mode. - Step 5Run and download the cleaned workbook — On a delete mode the tool calls
wb.removeWorksheet(ws.id)for each targeted sheet, re-serialises withwb.xlsx.writeBuffer(), and downloads a binary.xlsxnamed<original>-sheets-cleaned.xlsx. The result panel shows how many sheets were deleted. - Step 6Verify the cleaned file and keep the original — Re-run
List onlyon the downloaded file to confirm the hidden/VeryHidden counts are now zero (or reduced to what you intended). Deletion is permanent and there is no undo inside the file — keep your original as a backup.
Excel sheet visibility states
The three states a worksheet can be in, how each is set, and whether Excel's UI lets you reverse it.
| State (ExcelJS `ws.state`) | VBA constant | Visible in tab bar? | In Excel's Unhide dialog? | Set how |
|---|---|---|---|---|
visible | xlSheetVisible (-1) | Yes | n/a | Default for every new sheet |
hidden | xlSheetHidden (0) | No | Yes — right-click a tab → Unhide | Right-click tab → Hide, or VBA |
veryHidden | xlSheetVeryHidden (2) | No | No — does not appear in Unhide | VBA only (.Visible = 2) |
Mode dropdown — what each option does
The tool exposes exactly one control: a Mode dropdown with four options. There is no per-sheet checkbox list and no content preview.
| Mode value | Dropdown label | What it deletes | Output type |
|---|---|---|---|
list | List only (no changes) | Nothing — read-only enumeration | Text report (3 lines) |
delete-hidden | Delete hidden sheets | All state: hidden sheets | Binary .xlsx download |
delete-very-hidden | Delete VeryHidden sheets | All state: veryHidden sheets | Binary .xlsx download |
delete-all | Delete all hidden + VeryHidden | Both hidden and VeryHidden | Binary .xlsx download |
Tier limits for Excel tools
File-size and row caps for the excel tool family. This tool itself is gated to Developer tier (it will reject lower tiers before processing).
| Tier | Max file size | Row limit | Files per run | Hidden Sheet Destroyer? |
|---|---|---|---|---|
| Free | 5 MB | 10,000 | 1 | Blocked (requires Developer) |
| Pro | 50 MB | 100,000 | 5 | Blocked (requires Developer) |
| Pro-media | 200 MB | 500,000 | 20 | Blocked (requires Developer) |
| Developer | 500 MB | Unlimited | Unlimited | Available |
Cookbook
Real List only reports and before/after sheet inventories. Sheet names are representative of what real workbooks carry.
List only — a typical finance workbook
The default mode prints three lines so you can see exactly what is hidden before you decide. Notice the VeryHidden sheet that Excel's own Unhide menu would never show.
Mode: List only (no changes) Visible sheets (3): Dashboard, Summary, Inputs Hidden sheets (2): Lookup_Table, Rates_2025 VeryHidden sheets (1): _audit_log (no file downloaded — read-only)
Delete VeryHidden only — keep working lookup tables
You want to strip the VBA-buried _audit_log but keep Lookup_Table because visible formulas still reference it. Delete VeryHidden sheets removes only state: veryHidden.
Before (List only): Hidden sheets (2): Lookup_Table, Rates_2025 VeryHidden sheets (1): _audit_log Mode: Delete VeryHidden sheets After (re-run List only on the download): Hidden sheets (2): Lookup_Table, Rates_2025 VeryHidden sheets (0): none Download: report-sheets-cleaned.xlsx
Delete all hidden + VeryHidden before archiving
For a clean archive copy you want only the visible deliverable sheets. Delete all hidden + VeryHidden clears both groups in one pass.
Before: Visible (3): Dashboard, Summary, Inputs Hidden (2): Lookup_Table, Rates_2025 VeryHidden (1): _audit_log Mode: Delete all hidden + VeryHidden After: Visible (3): Dashboard, Summary, Inputs Hidden (0): none VeryHidden (0): none Download: model-sheets-cleaned.xlsx
Delete hidden breaks a VLOOKUP that pointed at it
If a visible formula references a hidden sheet you remove, Excel rewrites the reference to #REF!. List first, and if you must delete a referenced sheet, flatten the dependent formulas to values beforehand.
Visible sheet 'Summary' has: =VLOOKUP(A2, Lookup_Table!A:B, 2, 0) Mode: Delete hidden sheets (removes Lookup_Table) Result in Summary after delete: =VLOOKUP(A2, #REF!, 2, 0) -> #REF! error Fix order: run Formula to Value on Summary FIRST (see /excel-tools/excel-formula-to-value), then delete.
Nothing hidden — confirming a workbook is clean
Running List only on a file that is already clean returns zero counts for both groups. This is the verification step after any delete run.
Mode: List only (no changes) Visible sheets (4): Q1, Q2, Q3, Q4 Hidden sheets (0): none VeryHidden sheets (0): none -> safe to share
Edge cases and what actually happens
A visible formula references a sheet you delete
Formula error (#REF!)Deleting a hidden or VeryHidden sheet that a visible cell references (VLOOKUP, INDEX/MATCH, SUMIF across sheets) leaves the dependent formula as #REF!. The tool does not detect cross-sheet references before deleting. Run List only first, and if a sheet is referenced, flatten the dependents with Formula to Value before removing it.
Deletion is permanent — no in-file undo
By designOn a delete mode the tool calls removeWorksheet and re-serialises a new workbook; the deleted sheets are not stored anywhere in the output. There is no undo and no recovery from the cleaned file. Always keep the original .xlsx as a backup before running a destructive mode.
List only never produces a download
ExpectedList only returns a report-type text result, not a file. If you ran it and looked for a download button, switch the Mode dropdown to one of the three delete options. List is intentionally read-only so you can audit safely.
Tool blocks on Free / Pro / Pro-media tiers
403 Developer requiredThe processor checks isDeveloper(tier) and throws Hidden Sheet Destroyer requires Developer tier. before any file is read. The tier badge and overlay reflect this. The 5 MB / 10k-row Free limits never come into play because the tool is gated above them.
The tool does not preview cell contents
Names onlyList mode reports sheet names and counts, not the data inside each sheet. If a sheet name is ambiguous you cannot tell from this tool what it contains — open the workbook in Excel, or use the dependency/formula tools, to inspect before deleting.
Hidden chart sheets and dialog sheets
Worksheets onlyThe tool enumerates wb.worksheets. Legacy chart sheets and Excel 5.0 dialog sheets are a different object type and are not part of the hidden/VeryHidden worksheet counts. If a workbook has hidden chart sheets, handle those separately in Excel.
File is not a real XLSX package
Parse errorExcelJS expects a valid OOXML (ZIP) package. A corrupt file, a .csv renamed to .xlsx, or an encrypted/password-protected workbook will fail to load with a parse error. Repair or decrypt the file first; this tool removes hidden sheets, it does not open password-protected workbooks.
VeryHidden survives a normal Excel save
PreservedSimply opening and re-saving a workbook in Excel does not reveal or remove VeryHidden sheets — they round-trip silently because they are part of the OOXML and you cannot see them. That is exactly why this tool reads the raw state rather than trusting Excel's Unhide UI.
Re-serialised file may differ byte-for-byte
By designExcelJS rebuilds the workbook on write, so the cleaned .xlsx is not a byte-identical copy of the original minus sheets — the XML is re-emitted. Cell values, formulas on remaining sheets, and formatting are preserved, but exotic features authored by other tools should be spot-checked after a destructive run.
Frequently asked questions
What is a VeryHidden sheet?
VeryHidden is a worksheet visibility state (xlSheetVeryHidden, value 2) set through VBA. Unlike a normal hidden sheet, it does not appear in Excel's right-click Unhide dialog, so you cannot reveal it from the standard UI — only via VBA or a tool that reads the file structure directly. This tool reports VeryHidden sheets by name in List only mode and can delete them with Delete VeryHidden sheets.
What is the difference between Hidden and VeryHidden?
A hidden sheet can be un-hidden by any user from Excel (right-click a tab → Unhide). A veryHidden sheet cannot — it is missing from the Unhide list entirely and requires VBA to reveal. This tool treats them as two separate groups so you can delete one without the other.
How do I find every hidden sheet without changing the file?
Drop the workbook in, leave Mode on List only (no changes), and run. You get a three-line report listing visible, hidden, and VeryHidden sheet names and counts. No download is produced and the file is not modified.
Can I pick individual sheets to delete?
No. The tool has a single Mode dropdown with four options (List only, Delete hidden sheets, Delete VeryHidden sheets, Delete all hidden + VeryHidden). It deletes by visibility state, not by a per-sheet checklist. If you need to keep one specific hidden sheet, delete the others manually in Excel or restructure before running.
Can a deleted sheet be recovered from the output file?
No. Deletion is permanent — the sheet is not stored anywhere in the cleaned .xlsx. Keep your original file as a backup before running any delete mode.
Will deleting a hidden sheet break my formulas?
It can. If a visible cell references the deleted sheet (e.g. =VLOOKUP(A2, Lookup_Table!A:B, 2, 0)), Excel rewrites the reference to #REF!. List first; if a sheet is referenced, flatten the dependent formulas with Formula to Value (/excel-tools/excel-formula-to-value) before deleting.
What does the output file look like?
On a delete mode you get a binary .xlsx download named <original-name>-sheets-cleaned.xlsx, containing all visible sheets plus any hidden/VeryHidden sheets you chose not to delete. List only produces no file — just the text report.
Does this work on .xlsm macro-enabled files?
The file picker filters for .xlsx, .xls, and .ods. The underlying ExcelJS reader handles the OOXML package, and the output is always written as a standard .xlsx. If you have macros to remove as well, run the VBA Macro Stripper (/excel-tools/excel-vba-macro-stripper); note that saving as .xlsx drops the macro project regardless.
Does my file get uploaded anywhere?
No. ExcelJS reads the file into an ArrayBuffer in your browser and all processing happens client-side. The workbook never leaves your device. Only an anonymous processed-counter may increment for signed-in dashboard stats.
Why is the tool locked on my account?
Hidden Sheet Destroyer requires the Developer tier. The processor throws before reading the file if your tier is lower. Upgrade to Developer to use it; the Developer tier also raises the Excel file cap to 500 MB with no row limit.
How big a workbook can it handle?
On the Developer tier the Excel family cap is 500 MB per file with no row limit. In practice the ceiling is browser memory, because ExcelJS loads the whole workbook to enumerate and rewrite sheets.
Can I run this as an automated step?
Yes — GET /api/v1/tools/excel-hidden-sheet-destroyer returns the option schema (the single mode enum), and with the @jadapps/runner paired you can POST a file plus { "mode": "delete-all" } to http://127.0.0.1:9789/v1/tools/excel-hidden-sheet-destroyer/run. The file is processed locally by the runner and never reaches JAD's servers.
Privacy first
Every JAD Excel tool runs entirely in your browser using SheetJS and ExcelJS. Your spreadsheets, formulas, and data never leave your device — verified by zero outbound network requests during processing.