A Total Commander Lister plugin that previews
Microsoft Office documents (Word, Excel, PowerPoint, Outlook MSG, Visio),
PDF, and anything else Windows Explorer's preview pane (Alt+P) can show,
directly in TC's F3 / Quick View (Ctrl+Q) pane. Whatever Explorer
previews on your machine, this plugin previews in the Lister pane.
The plugin displays previews exactly the way Windows Explorer or Outlook do — it does not parse documents itself, nor does it carry a managed runtime. For files it cannot preview (no handler installed for that extension) the plugin steps aside and Total Commander uses your next configured Lister plugin or its built-in viewer, so installing it never takes anything away from you.
What you need on the target computer depends on the file type: MS Office for Word / Excel / PowerPoint / Outlook content; nothing extra for PDF on Windows 10+ (Microsoft Edge ships an in-the-box handler); whatever application installs the handler for everything else.
Project page: https://github.com/michal-ruzicka/TCOfficeView — source code, releases and issue tracker.
Binary releases: https://github.com/michal-ruzicka/TCOfficeView/releases
Support: If you find this plugin useful, consider supporting its development.
-
https://github.com/sponsors/michal-ruzicka — GitHub Sponsors (GitHub account needed).
-
https://ko-fi.com/michal_ruzicka — Buy me a Coffee with no specific account needed, card payment is possible.
-
https://revolut.me/ruzicka_michal — Donate me via Revolut, debet/credit card or Apple Pay.
The recommended way is the Total Commander auto-installer:
- Download
TCOfficeView.vX.Y.Z.zipfrom the latest release. - In Total Commander, navigate to the ZIP file and press Enter.
- TC detects the bundled
pluginst.infand asks whether to install the plugin — confirm. - Press F3 or Ctrl+Q on a
.docx/.xlsx/.pptxfile to verify.
If you prefer to install manually, unzip the archive into a persistent
folder (for example C:\Tools\TCOfficeView\) and add TCOfficeView.wlx
(32-bit TC) or TCOfficeView.wlx64 (64-bit TC) under Configuration →
Options → Plugins → Lister plugins → Configure → Add.
Upgrading from an earlier version? Total Commander keeps an already-configured detect string when a plugin is replaced, so users coming from v2.1 or earlier won't automatically pick up the new universal file-type support — see Upgrading from an Earlier Version below for how to refresh it.
Each release ZIP is accompanied by a detached GPG signature file
(TCOfficeView.vX.Y.Z.zip.asc). Before installing, verify that the
archive has not been tampered with:
gpg --keyserver keys.openpgp.org --recv-keys 489C5EC80FD62BE89E59B4F719C13E8CE0F5DB61
gpg --verify TCOfficeView.vX.Y.Z.zip.asc TCOfficeView.vX.Y.Z.zip
GPG should report Good signature from "Michal Růžička <ruzicka.mich@gmail.com>".
The full fingerprint of the signing key is 489C 5EC8 0FD6 2BE8 9E59 B4F7 19C1 3E8C E0F5 DB61.
Every release is built from a pinned, identical toolchain, so the same source code always produces byte-for-byte identical binaries. This means you are not just trusting the GPG signature — you can independently confirm that the published binary matches the published source code by building it yourself and comparing the SHA-256 of the ZIP against the released ZIP archive or the CI build log for the release commit.
Full details — how the build achieves this, and how to run a verification build yourself — are in Reproducible Builds in the developer documentation.
There is no UI to configure at runtime — just press F3 (or use Quick View [Ctrl+Q]) on any supported file. The preview tracks the Lister pane size and selecting a different file in the panel loads it into the same Lister session.
Whatever Windows Explorer's preview pane (Alt+P) shows on your
machine. Common formats you can expect on a typical Windows + Office
installation:
| Source | Extensions |
|---|---|
| Microsoft Word | DOC, DOCX, RTF, ODT, DOT, DOTX |
| Microsoft Excel | XLS, XLSX, XLSB, ODS, XLT, XLTX |
| Microsoft PowerPoint | PPT, PPTX, ODP, PPS, PPSX, POT, POTX |
| Microsoft Visio | VSD, VSDX |
| Outlook / Windows built-in mail previewer | MSG |
| Microsoft Edge (built-in) / Adobe Acrobat Reader | |
| Adobe Photoshop (if installed) | PSD |
| AutoCAD / DWG TrueView (if installed) | DWG, DXF |
| Sketchup (if installed) | SKP |
…plus anything else whose installer registers a Windows Preview Handler.
There is no list of supported file types to maintain — install or
uninstall an application that ships a handler, and TCOfficeView picks
that up automatically the next time you use F3 / Ctrl+Q.
Quick previews use a simplified rendering pipeline. Office's built-in preview components — used by Windows Explorer's preview pane and by this plugin in the default mode — render through a reduced pipeline optimised for speed and stability inside a host window, not the full editing UI. For Word this means a flowing Web Layout without page breaks, headers or footers; Excel shows a simplified grid; PowerPoint shows static slides without transitions. An opt-in Full mode that launches the real Word, Excel or PowerPoint application and displays it as an overlay over the Lister pane is available; see Application Render Mode below.
MSG and VSDX caveat. The New Outlook (the modern rewrite) has dropped the classic
.msgpreview handler, and recent Visio installs sometimes omit the.vsdxhandler. If Windows Explorer's own preview pane is also empty for a given file, the plugin falls back to the information panel.
Macro-enabled Office formats (DOCM, XLSM, PPTM, …). Office deliberately does not register a preview handler for any of its macro-enabled formats — DOCM, DOTM, XLSM, XLTM, PPTM, PPSM, POTM — so these files show no preview in Windows Explorer's
Alt+Ppane either; the plugin steps aside and Total Commander uses its next viewer. This applies in every render mode: without a registered preview handler the plugin never claims the file, so these formats cannot be previewed at all — not even by setting Full mode as the default. Previews never run macros in any case. This matters for the formats that do preview but can still carry macros — XLSB and legacy DOC / XLS / PPT: the quick preview components cannot execute macros, and Full mode explicitly disables them before opening the file. To actually run a document's macros, open the file in the Office application itself.
Settings live in TCOfficeView.ini. The plugin reads it from two
locations and uses the first one that exists — values are not merged
across files:
%APPDATA%\GHISLER\TCOfficeView.ini— per-user override<plugin install dir>\TCOfficeView.ini— system-wide default, shipped with the plugin
The shipped INI has every option commented out, so all defaults apply.
To customise, copy that file to %APPDATA%\GHISLER\TCOfficeView.ini and
edit the copy. Environment variables (%TEMP%, %LocalAppData%,
%UserProfile%, %APPDATA%, …) are expanded in any value.
Diagnostic logging is off by default. Turn it on by setting LogPath
under [Logging] to a writable file. Missing parent directories are
created on first write.
[Logging]
LogPath=%LocalAppData%\TCOfficeView\host.logLeave the value empty (or comment it out) to disable logging.
Under [FallbackUI]:
FontFamily— exact font name. Leave empty (the default) to auto-pick the first installed font from: Aptos Mono (Microsoft 365 / Office 2024) → Consolas (Windows Vista+) → Cascadia Mono (newer Windows) → Lucida Console (Windows 2000+) → Courier New (guaranteed final fallback).FontSize— font size in points; default12, clamped to6..72. The font is scaled to the actual monitor DPI when the panel is created.
[FallbackUI]
FontFamily=Cascadia Code
FontSize=13Four values are accepted per application under [Mode]:
| Value | Render engine | Mode-switch button |
|---|---|---|
quick-switchable (default) |
Preview Handler | shown (→ Full) |
quick |
Preview Handler | hidden |
full-switchable |
OLE Automation (real app) | shown (→ Quick) |
full |
OLE Automation (real app) | hidden |
The quick engine is the built-in Office preview component hosted inside the Lister pane. It is fast (~200–800 ms to first display) and memory-light (~30–80 MB), but the rendering pipeline is simplified (Word in Web Layout without page breaks, Excel in a simplified grid, PowerPoint slides without transitions).
The full engine launches the real Word, Excel or PowerPoint application in the background, opens the file read-only, and floats its main window as a borderless overlay over the Lister pane. It is slower (~2–4 s cold start, ~100–300 MB per instance) but renders documents exactly as the full Office application would.
Neither engine ever runs macros. Quick previews cannot execute them by design, and Full mode disables macro execution before opening the file — a macro-carrying XLSB or legacy DOC / XLS / PPT file previews as an ordinary document with its macros inert. (The explicitly macro-enabled formats — DOCM, XLSM, PPTM, … — never preview at all, in either mode; see Supported Formats.) External workbook links are not refreshed either. To run a document's macros, open the file in the Office application itself.
All three applications can be configured independently:
[Mode]
Word=quick-switchable
Excel=quick-switchable
PowerPoint=quick-switchableThe -switchable variants show a persistent overlay button in the
top-right corner of every Word / Excel / PowerPoint preview. One click
flips the current preview to the other engine without changing your INI
default. The switch is per-preview only — selecting another file (or
re-opening the same one) returns to the configured default. The button
appears on every file type the application can open — including the
OpenDocument formats (ODT, ODS, ODP), Office templates (DOT, DOTX,
DOTM, XLT, XLTX, XLTM, POT, POTX, POTM) and PowerPoint slideshows
(PPS, PPSX, PPSM) — and is hidden for file types that have no
full-mode equivalent (.msg, .vsdx) regardless of the setting.
All three apps run in full mode as borderless overlay windows positioned over the Lister pane — not embedded inside it. The overlay is live while Total Commander is the front window; when you switch to another application the pane shows a frozen snapshot of the last state — still readable, just not live — and resumes as soon as you return to TC.
What full mode does for each application:
- Word — shows the document in Print Layout (page boundaries, headers, footers, page numbers) with the page scaled to the Lister pane width. The zoom re-fits automatically when you resize the pane. Rulers are hidden and the preview is truly read-only (typing in the document is blocked).
- Excel — opens the workbook read-only with the zoom set to 100%. The preview is interactive: you can scroll, select cells, switch sheet tabs and use the ribbon. The workbook is opened read-only, however — your changes are not saved.
- PowerPoint — opens the presentation read-only with the slide scaled to fit the Lister pane. The zoom re-fits automatically when you resize the pane. The preview is interactive: you can scroll, change view mode, change text in the slides. The presentation is opened read-only, however — your changes are not saved.
Full mode tradeoffs to be aware of:
- Cold start ~2–4 s the first time an Office document of a given
application is opened. Subsequent documents of the same
application within the same Lister window load faster (~0.5–1 s)
because the running Office instance is reused. Switching between
file types (
.docx→.xlsx) quits the previous application and spins up the next one, so that switch pays the cold-start cost again. Browsing a folder with the arrow keys won't trigger a cold start for every file — see Full-Mode Load Delay. - Live only while Total Commander is the front window. When you switch to another application the pane shows a frozen snapshot of the last state (still readable) and goes live again when you return.
- Memory ~100–300 MB per running Office instance.
- Requires a full Microsoft Office installation of the relevant application — not Office Viewer, not LibreOffice.
- Falls back to quick mode automatically on any failure (Office missing, document password-protected, …), so you always get some preview.
- No global Office settings are changed. Full mode only touches settings scoped to the open preview window — your standalone Word, Excel and PowerPoint will start up exactly as you left them. The ribbon, for example, stays visible in the preview because hiding it would hijack your global Office settings.
When you navigate to a Word, Excel or PowerPoint file that will open in full mode, the plugin waits a configurable dwell-time before actually launching the Office application. If you move to a different file within that window, the timer resets and the previous file is never loaded. Only the file you actually pause on starts the Office cold-start.
This prevents a wave of expensive Office launches when you browse a
folder of Office documents with the arrow keys. The default is
1000 ms (1 second); set it in TCOfficeView.ini:
[Mode]
FullLoadDelayMs=1000 ; delay in ms before starting a full-mode Office load
; 0 = disabled (load immediately)The delay works differently depending on the configured mode:
-
full/full-switchable: The Office launch is deferred from the moment you navigate to the file. If you move away within the dwell window, the launch is cancelled entirely. -
quick-switchable(default): Quick mode runs immediately. The delay kicks in only if the quick preview handler fails — which typically happens for documents synced from a non-primary Microsoft 365 tenant (SharePoint cross-tenant). In that case the plugin shows "Preview is loading…" and waits the dwell-time before starting the real Office application. If you move to a different file within that window, the Office launch is cancelled.Files that succeed in quick mode are completely unaffected by this setting — they load at full speed with no delay.
The delay does not apply when you click the → Full overlay
button — that always loads immediately.
Documents synced from a SharePoint site in a Microsoft 365 tenant
other than your primary one (for example, an external organisation
you collaborate with) often refuse to render in quick mode. You see
the fallback panel with an HRESULT such as 0x80004005 (E_FAIL) or
0x80004001 (E_NOTIMPL) and the message "The registered preview
handler failed to load it".
This is an Office-side limitation, not a TCOfficeView one. The
preview handler runs in a sandboxed Windows surrogate process
(prevhost.exe) that does not have the credentials needed to
authenticate against the second tenant. The same files therefore
also refuse to preview in Windows Explorer's Alt+P / Preview
Pane — try it on the same document to confirm.
The full-mode renderer (the real Word / Excel / PowerPoint application launched in the background) runs as your user with full access to your authentication tokens, so it usually succeeds where the preview handler fails.
TCOfficeView can detect this situation and retry the preview in full
mode automatically. The feature is controlled per application from
the [AutoFallback] section in TCOfficeView.ini:
[AutoFallback]
Word=true ; default
Excel=true ; default
PowerPoint=true ; defaultDefault behaviour (true for all three) — when the preview handler
refuses an Office file:
- The plugin silently launches the real Office application.
- The document opens in full mode (read-only) and replaces the error panel.
- You see a working preview a couple of seconds later instead of an error message.
Auto-fallback only kicks in when all of these hold:
-
The file is a Word, Excel or PowerPoint document.
-
The application's
[Mode]is set toquick-switchable(the default). The explicitquickmode is treated as "user wants quick only, period" — the fallback panel is shown without retrying. Forfull/full-switchablethe question does not arise, the preview is already in full mode. -
The toggle for that application above is
true. -
The file is not marked with Mark-of-the-Web (downloaded from the internet, copied from a network share, or saved from an email attachment). MOTW is by far the most common reason an otherwise- healthy quick-mode handler refuses to render an Office file, and the typical fix is a single click on the Unblock this file button that the fallback panel offers. Once the file is unblocked it usually renders fine in quick mode, which is simpler and lighter than full mode — so we prefer to surface the Unblock button rather than silently flip the document into the real Office application.
Cross-tenant SharePoint documents that are ALSO marked with MOTW are handled naturally by this design: after the user clicks Unblock, the file is reloaded; quick still fails (the cross- tenant authentication issue is independent of MOTW), and at that point the MOTW guard no longer fires and auto-fallback proceeds to full mode as usual. The Unblock click was technically a wasted step in that case, but the user only pays it once per file.
When the application is explicitly configured for full or
full-switchable, the MOTW pre-check does not apply — the document
flows directly into the real Office application, which displays its
own Protected View (yellow "Enable Editing" banner, content visible
in a read-only sandbox). MOTW handling there is left entirely to
Office.
Set the toggle to false for an application if you would rather see
the explicit fallback panel (with the preview handler's HRESULT for
diagnosis) and decide for yourself whether to click → Full to
load the file in the real application.
When auto-fallback has loaded a document in full mode and you then
click the → Quick overlay button, the click is treated as an
explicit "I want quick mode" instruction and auto-fallback does
not run again. Without this guard the same click would bounce the
document straight back to full mode and the button would appear to
do nothing. Instead, the quick fallback panel is shown — explaining
why the preview handler refuses the file — and the overlay button
flips to → Full so you can return to full mode deliberately.
Under [PreviewHandlers] you can override which preview handler is used
for a given file extension, or deny an extension entirely so Total
Commander routes it to the next configured plugin.
-
Pin a specific handler — when several handlers are installed for the same type (e.g. both Edge and Adobe Reader register a PDF preview handler), write the CLSID you prefer:
[PreviewHandlers] .pdf={3A84F9C2-6164-485C-A7D9-4B27F8AC009E}
The CLSID must include the braces. You can find the installed handlers and their CLSIDs in the registry under
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\PreviewHandlers, or enable the discovery report (see below) to get a ready-to-copy list. -
Deny an extension — write the extension with an empty value so the plugin behaves as if no handler existed for that type. Total Commander then passes the file to the next Lister plugin or its built-in viewer. Useful when another plugin does a better job for a specific format.
[PreviewHandlers] .html= .pdf=
Changes take effect immediately — the INI is re-read on every preview.
-
Discovery report — set
ReportPathto a writable file and the host will regenerate it on every start-up, listing every installed handler (with CLSID) and every extension assignment in effect, formatted as commented-out INI lines ready to copy:[PreviewHandlers] ReportPath=%APPDATA%\GHISLER\TCOfficeView.available-handlers.txt
Turn it on while configuring overrides, then comment it out again.
If your machine has no Preview Handler at all for a given file type, the plugin silently steps aside and Total Commander uses your next configured Lister plugin or its built-in viewer instead. Installing TCOfficeView therefore never takes anything away from you — file types it cannot handle keep working exactly the way they did before.
If a Preview Handler is installed but fails to render the file (corrupt Office installation, broken handler, password-protected document, …), the plugin shows a small information panel with the file's basic details — name, full path, extension, size, and created / modified / last-accessed timestamps — together with a brief note about why the preview did not work. This way the Lister never shows an empty pane when a handler was advertised but couldn't deliver.
Total Commander does not update an already-configured detect string
when you re-install or upgrade a plugin — it keeps whatever you (or the
previous installer) set originally. This is fine for fresh installs
(the plugin announces EXT="*" and TC picks it up automatically) but
means upgraders from v2.1 or earlier keep their old detect string,
which lists only the original Office extensions and never asks the
plugin about PDF, HTML, PSD, DWG and the rest.
To pick up the new universal behaviour, do one of the following:
- Open Configuration → Options → Plugins → Lister plugins → Configure.
- Select TCOfficeView and click Remove.
- Close Total Commander completely and reopen it.
- Either re-run the auto-installer (navigate to the release ZIP in TC and press Enter), or add the plugin back manually from the same dialog.
Total Commander will then ask the plugin DLL for its detect string
on first use and store the new EXT="*" value.
Total Commander's GUI does not expose a way to edit a Lister plugin's detect string; it has to be changed in the configuration file.
- Close Total Commander completely (don't leave it running — TC may
overwrite
wincmd.inion exit with its in-memory copy). - Open
wincmd.iniin a plain-text editor. To find its location, in TC open Configuration → Options → About. Common locations are the TC install directory or%APPDATA%\GHISLER\wincmd.ini. - Locate the
[ListerPlugins]section. You will see entries like:[ListerPlugins] 0=C:\Program Files\Some other plugin\Foo.wlx 0_detect=EXT="JPG"|EXT="PNG" 1=C:\Users\<you>\AppData\Roaming\GHISLER\TCOfficeView\TCOfficeView.wlx64 1_detect=EXT="DOC"|EXT="DOCX"|…|EXT="MSG"
- Find the line whose value is the TCOfficeView plugin path (the
<N>=…line). Its companion<N>_detect=…line on the next row is the detect string for that plugin. - Replace the detect string value with:
…so the line becomes for example
EXT="*"1_detect=EXT="*". - Save the file and reopen Total Commander.
If you would rather keep a stricter, finite set of file types instead
of EXT="*", use this as the <N>_detect= value:
EXT="DOC"|EXT="DOCX"|EXT="DOCM"|EXT="RTF"|EXT="ODT"|EXT="DOT"|EXT="DOTX"|EXT="DOTM"|EXT="XLS"|EXT="XLSX"|EXT="XLSM"|EXT="XLSB"|EXT="ODS"|EXT="XLT"|EXT="XLTX"|EXT="XLTM"|EXT="PPT"|EXT="PPTX"|EXT="PPTM"|EXT="ODP"|EXT="PPS"|EXT="PPSX"|EXT="PPSM"|EXT="POT"|EXT="POTX"|EXT="POTM"|EXT="VSD"|EXT="VSDX"|EXT="MSG"|EXT="HTML"|EXT="HTM"|EXT="PDF"
With this list the plugin will be asked only about the common
formats; with EXT="*" it gets asked about every file but silently
steps aside for any file type Windows has no preview handler for.
The practical user experience is the same except for less common
formats (PSD, DWG, SKP, …) which only EXT="*" catches.
The plugin doesn't seem to do anything — I see TC's built-in viewer
instead. Your machine has no Preview Handler for that file type, so
the plugin steps aside (this is the intended behaviour, not a bug).
Easy way to confirm: open the file in Windows Explorer and press
Alt+P — if Explorer's preview pane is also empty, no handler is
installed. Install (or repair) the application that owns the file
type and the preview will work in both places.
I see the information panel instead of the real preview. A Preview Handler is registered for the file type but it failed to render this specific file. Common causes: corrupted application install (try a repair install), a password-protected document, or an unusual file variant the handler does not support.
TC crashes when previewing. This should not happen thanks to process isolation — the actual preview runs in a separate helper process. If it does happen, the most likely cause is a 32-/64-bit mismatch (for example a 64-bit Office where only a 32-bit Preview Handler is registered). Switch to the other bitness of the plugin.
Need deeper diagnostics? Diagnostic logging can be turned on in
TCOfficeView.ini (see Logging above), and developer-level
troubleshooting notes — Event Viewer entries, registry keys to check,
the helper process name to look for — live in CONTRIBUTING.md.
Build instructions, repo layout and architecture notes for developers live in CONTRIBUTING.md.
This project is licensed under the Apache License 2.0 — see
LICENSE.md for the full text. Source files carry SPDX
identifiers (SPDX-License-Identifier: Apache-2.0). Release notes are in
CHANGELOG.md.

