How to strip the software version & company name from excel app properties
- Step 1Finalise the workbook you are sending — Save the final
.xlsxyou intend to deliver. Do the metadata wipe last, after all content edits, because ExcelJS rewrites the file. - Step 2Check the current app.xml values — Right-click the file → Properties → Details, or File → Info in Excel. Confirm the
Company,Managerand program/version values you want gone. - Step 3Drop the file onto the tool — Upload one
.xlsx. ExcelJS loads it in browser memory; nothing leaves your machine. There are no settings to choose. - Step 4Run the wipe — On run,
companyandmanagerare blanked and the core.xml author fields are cleared. ExcelJS then writes a fresh workbook with its own genericApplication/AppVersion. - Step 5Download and rename for the client — Save
<name>-clean.xlsx. Rename it to a client-appropriate filename — the wipe does not change filenames, which are filesystem data, not properties. - Step 6Spot-check before sending — Re-open Properties → Details on the clean file: Company/Manager/Author blank, version shows a generic
16.0300. If the Title still names a project, clear it via the office-doc-property-wiper.
What a client can read before vs after
Windows Explorer → Properties → Details. The version field is normalised to a generic ExcelJS value, not left blank.
| Details field | Before (typical) | After this tool |
|---|---|---|
| Company | Acme Advisory Ltd | (blank) |
| Manager | Head of Modelling | (blank) |
| Authors | first.last@acme.example | (blank) |
| Program name | Microsoft Excel 2021 | Microsoft Excel |
| Version | 16.0.14326.21186 | 16.0300 (generic) |
| Tags / Keywords | internal;v3;client-x | (blank) |
App-property fields and their fate
Only Company and Manager are author-editable in app.xml; Application/AppVersion are writer-controlled.
| app.xml field | Action | Resulting value |
|---|---|---|
Company | Blanked to empty string | empty |
Manager | Blanked to empty string | empty |
Application | Overwritten by ExcelJS | Microsoft Excel |
AppVersion | Overwritten by ExcelJS | 16.0300 |
DocSecurity | Written by ExcelJS | 0 |
TitlesOfParts (sheet names) | Regenerated from the workbook | current sheet list |
Tier limits for client-sized files
Single file per run. Most client deliverables fit Pro comfortably.
| Tier | Max file size | Row cap |
|---|---|---|
| Free | 5 MB | 10,000 |
| Pro (required) | 50 MB | 100,000 |
| Pro-media | 200 MB | 500,000 |
| Developer | 500 MB | unlimited |
Cookbook
Realistic client-delivery scenarios. The XML snippets show exactly what changes inside the workbook.
Neutralising the build number
The most common client-facing concern: do not advertise your exact patch level. The build string is replaced with a generic version.
Before (docProps/app.xml): <Application>Microsoft Excel</Application> <AppVersion>16.0.14326.21186</AppVersion> After (-clean.xlsx): <Application>Microsoft Excel</Application> <AppVersion>16.0300</AppVersion> → patch level no longer derivable from the file
Removing the registered company name
Your Office install stamps Company onto every save. Strip it for a vendor-neutral model.
Before: <Company>Acme Advisory Ltd</Company> <Manager>Head of Modelling</Manager> After: <Company></Company> <Manager></Manager>
Clearing a draft's internal keywords
Drafts often carry internal tags in core.xml that you do not want a client to see.
Before (docProps/core.xml): <cp:keywords>internal;v3;client-x-pricing</cp:keywords> <dc:description>Do not send pre-approval</dc:description> After: <cp:keywords></cp:keywords> <dc:description></dc:description>
Title still names the deal — fix it
The Title property is not in scope, so a deal codename can leak. Confirm and clear separately.
Before & after this tool (unchanged): <dc:title>Project Falcon – client pricing v3</dc:title> Fix: Excel File → Info → clear Title, or /security-tools/office-doc-property-wiper
Pre-send checklist for a confidential model
A repeatable order for analysts shipping models to external clients.
[ ] excel-app-metadata-wiper (Company/Manager/author/version) [ ] clear Title (office-doc-property-wiper) [ ] /excel-tools/excel-vba-macro-stripper (if macro-enabled) [ ] /excel-tools/excel-external-link-auditor (no stray links to internal shares) [ ] rename file → client-facing name
Edge cases and what actually happens
AppVersion shows 16.0300, not blank
By designExcelJS always writes Application = Microsoft Excel and AppVersion = 16.0300. Your real build is removed, but the field is populated with a generic value. For client delivery this is exactly what you want — a neutral, non-traceable version string.
Client opens the file and sees a 'modified just now' date
ExpectedExcelJS regenerates created/modified timestamps on write, so the deliverable looks freshly created. If a specific date matters for the client engagement, set it in Excel after the wipe, or use the office-doc-property-wiper for date handling.
Title property leaks the deal name
PreservedThis tool does not clear Title. A project codename in dc:title will travel with the file. Always confirm Title before a client send and clear it in Excel or with office-doc-property-wiper.
External links to internal network shares
PreservedFormulas referencing \\fileserver\models\... or linked workbooks are not metadata and survive the wipe — and they expose internal infrastructure to the client. Audit them with excel-external-link-auditor and break links in Excel before sending.
Macro-enabled client template (.xlsm)
ExpectedOutput is always .xlsx. ExcelJS does not reliably carry the macro container forward, so an .xlsm becomes a macro-free .xlsx. If the client needs macros, do property edits inside Excel; if you want macros gone for safety, that is a feature — confirm with excel-vba-macro-stripper.
File exceeds Pro 50 MB limit
rejectedLarge multi-sheet client models can exceed 50 MB. ExcelJS loads the whole file into memory, so over-limit files are rejected. Move to Pro-media (200 MB) or Developer (500 MB), or run a desktop script.
Open-password protected deliverable
failsAn encrypted workbook cannot be parsed as a ZIP, so ExcelJS fails to load it. Remove the open password in Excel, wipe metadata, then re-apply protection if the client requires it.
Custom DMS properties from your document system
PreservedSharePoint/iManage often inject custom properties (document IDs, classification). These live in custom.xml and are not removed here. Strip them via Office's Inspect Document before sending to a client.
Charts and named ranges in the model
PreservedThe ExcelJS round-trip re-serialises charts, defined names and formats. Mainstream content is faithful; if the deliverable relies on unusual features, diff against the original with excel-format-inspector.
Filename still identifies you
ExpectedA file called ACME_internal_model_v3.xlsx still names you even with clean properties. Rename to a client-appropriate filename; the wipe only adds a -clean suffix and never edits the original name.
Frequently asked questions
Will the client be able to tell which Excel version I used?
No specific build. ExcelJS replaces your real AppVersion (e.g. 16.0.14326.21186) with the generic 16.0300 and writes Application = Microsoft Excel. The exact patch level and deployment are no longer derivable from the file.
Why does it matter that the version is embedded?
An exact build string tells a client's security team your patch level (useful for targeting known CVEs) and reveals deployment details. Normalising it to a generic value removes that intelligence while keeping the file a valid Excel workbook.
Does it remove my company name?
Yes — Company in app.xml is set to empty, as is Manager. Both stop travelling to the client.
Is the AppVersion field left empty?
No. It is overwritten with 16.0300, a generic ExcelJS default. Your real build is gone; the field is neutral rather than blank.
Does the Title get cleared?
No. Title is out of scope here. Check it before sending — a project codename in Title can leak. Clear it in Excel or with the office-doc-property-wiper.
Is the file uploaded to send it?
No. Everything happens in your browser via ExcelJS. A confidential client deliverable is processed locally and never transmitted.
Will my formulas, charts and formatting survive?
Yes. The workbook is round-tripped through ExcelJS, preserving cells, formulas, number formats, charts and defined names. Only the listed document properties change.
Can I clean a batch of client files at once?
Not in this UI — it processes one file per run. Run each deliverable individually, or script ExcelJS for bulk processing.
What about external links to our internal shares?
Those are formula content, not metadata, so they survive. Audit them with excel-external-link-auditor and break the links in Excel before delivery.
What file do I get back?
A binary .xlsx named <original>-clean.xlsx. The result panel shows duration and a change count; rename the file for the client before sending.
Does it work on .xlsm client templates?
It will load one, but the output is .xlsx and macros are not reliably preserved. Treat the result as a macro-free copy; use excel-vba-macro-stripper if removing macros is the goal.
Why is this Pro tier?
ExcelJS is heavier than the lightweight CSV-style tools. Pro tier (50 MB / 100,000 rows) covers the compute and size allowance for real client models.
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.