Skip to content

UI Customization ​

Every binding renders the same PowerPoint-style chrome: a ribbon, a File tab, a File > Options (Settings) dialog, right-click menus, a keyboard map, a slide rail, an inspector, a status bar and a handful of dialogs. Most embeddings do not need all of it. A kiosk wants no editing chrome at all; a corporate portal wants the AI assistant gone and the author name pinned to the signed-in user; a teaching tool wants a three-tab ribbon.

All of that is one object, ViewerCustomization, which you pass to the viewer and can change at runtime:

ts
import type { ViewerCustomization } from 'pptx-react-viewer'; // or vue / angular / svelte / vanilla

const customization: ViewerCustomization = {
	ribbon: {
		hiddenTabs: ['draw', 'record'],
		hiddenGroups: ['insert.media'],
		hiddenButtons: ['broadcast', 'home.font.changeCase'],
	},
	options: {
		hiddenPages: ['trust', 'addIns'],
		locked: { 'general.userName': 'Ada Lovelace' },
		defaults: { 'advanced.showGrid': true },
	},
	contextMenu: { hiddenElementCommands: ['save-as-picture'] },
	keyboard: { disabled: ['newSlide'], remap: { duplicate: 'Mod+Shift+D' } },
	hiddenPanels: ['notes'],
	disabledFeatures: ['ai'],
	hiddenDialogs: ['broadcast'],
	hiddenExportFormats: ['video', 'gif'],
};

The object, its types, its id catalogues and the helper methods are identical in all five bindings. The logic lives once in the internal shared package, so a customisation that works in React works the same way in Svelte.

Concepts ​

Hide, lock, default ​

There are three different things you can do to a setting in File > Options, and they compose:

You wantUse
The user never sees the settingoptions.hiddenSettings: ['general.userInitials']
The setting has a fixed value the user cannot changeoptions.locked: { 'general.userName': 'Ada' } (renders read-only)
Both: a fixed value and no control at allput the id in locked and hiddenSettings
A different starting value the user may still changeoptions.defaults: { 'advanced.showGrid': true }
  • A locked value is forced into the options store immediately and every later write to it is ignored, whichever path it comes from (the dialog, a ribbon toggle that writes the same option, Reset). The control renders disabled with the tooltip "This setting is managed by your organization". Locked values are never written to the user's saved preferences, so removing the lock gives the user back their own value.
  • A default replaces the built-in default for users who have not saved a choice of their own, and becomes what Reset returns to. Host defaults are not persisted either: change the default in a later release and every user who never touched that setting follows it, while users who did keep their choice.

Derived rules ​

Some ids switch off more than one entry point, so you do not have to list every button that opens a dialog. These rules are applied once, in the shared resolver:

  • hiddenDialogs: ['share'] removes the Share button, the File > Share page and the Share card. ['print'] removes File > Print and the Print card; ['export'] removes the Export button and File > Export; ['options'] removes File > Options.
  • disabledFeatures: ['collaboration'] hides the Share and Broadcast dialogs (and so all of the above for them).
  • disabledFeatures: ['ai'] removes the AI toggle and panel, the "Ask AI" / "Fix with AI" context-menu entries and the AI page of File > Options, even when the host passes an ai config.
  • disabledFeatures: ['comments'] removes the Add Comment context-menu entry.
  • disabledFeatures: ['presentMode'] removes the Slide Show ribbon tab and the F5 / Shift+F5 start-show shortcuts.
  • hiddenExportFormats removes individual File > Export cards; hiding all six removes the Export button and page too.
  • An Options section that loses every control is removed; an Options page that loses every section is removed. Menus repair their separators when the first entry of a group is hidden.

Props and the imperative API ​

Pass the object as the customization prop (input, option) to set it up front, and use the imperative helpers on the component handle to change it while the viewer is running. Every change re-renders the affected chrome immediately; nothing needs to be remounted.

  • The prop replaces: when you give the viewer a new customization object, it becomes the whole customisation, discarding helper-method edits made since. Keep the object stable (memoise it, or keep it in state) unless you mean to replace it.
  • The helpers merge: hideRibbonTab('draw') adds one id to what is there. updateCustomization(patch) merges one level deep (each section merges field by field; a list you pass replaces that list).

Back-compat: hiddenActions and Customize Ribbon ​

The older hiddenActions prop keeps working. It is unioned with ribbon.hiddenTabs and ribbon.hiddenButtons, so you can migrate at your own pace. The user's own File > Options > Customize Ribbon choices are unioned on top: a tab is shown only if neither the host nor the user hid it.

Ribbon groups and controls ​

Below the tab level, every ribbon group and every control inside a group has a stable id from one shared catalogue: <tab>.<group> for a group and <tab>.<group>.<control> for a control, named after PowerPoint's own captions (home.font, home.font.bold, insert.media.media, view.show.ruler). The contextual tabs that appear for a selection (shapeFormat, pictureFormat, tableDesign, chartDesign, smartArtDesign) are addressed the same way, and their tab ids are accepted by ribbon.hiddenTabs.

ts
const customization: ViewerCustomization = {
	ribbon: {
		hiddenGroups: ['home.editing', 'insert.media'],
		hiddenButtons: ['home.font.changeCase', 'home.paragraph.columns', 'mergeShapes'],
		hiddenTabs: ['chartDesign'],
	},
};

ribbon.hiddenButtons takes both kinds of id: the older top-level toolbar buttons (share, zoom, ...) and the catalogued ribbon controls. mergeShapes / home.arrange.mergeShapes and crop / home.arrange.crop name the same control, so either spelling hides it. The full lists are in the reference below.

Every binding tags its ribbon markup with data-ribbon-group and data-ribbon-control and renders one stylesheet the shared model generates from the resolved customisation, scoped to that viewer (data-pptx-ribbon-scope), so a hidden group or control is removed from layout and from the accessibility tree in all five bindings the same way. The attributes are also a stable hook for your own styling or tests.

The imperative API ​

Every binding exposes these methods on its component handle (React ref, Vue template ref, Angular component instance, Svelte bind:this, Vanilla instance):

MethodEffect
getCustomization()The current ViewerCustomization (a snapshot; do not mutate it).
setCustomization(c)Replace the whole customisation.
updateCustomization(patch)Merge a partial customisation.
resetCustomization()Back to the stock UI.
hideRibbonTab(id) / showRibbonTab(id)Toggle one ribbon tab (a contextual tab id stops that tab appearing).
hideRibbonGroup(id) / showRibbonGroup(id)Toggle one group inside a tab (home.font).
hideToolbarButton(id) / showToolbarButton(id)Toggle one toolbar button, control cluster or ribbon control.
hideRibbonControl(id) / showRibbonControl(id)Toggle one ribbon control (home.font.bold).
hideOptionsPage(id) / showOptionsPage(id)Toggle one File > Options page.
hideOptionsSection(id) / showOptionsSection(id)Toggle one section of an Options page.
hideSetting(id) / showSetting(id)Toggle one setting.
lockSetting(id, value, hidden?)Pin a setting to value; hidden: true also removes its control.
unlockSetting(id)Remove a lock.
setSettingDefault(id, value)Set a host default (undefined clears it).
hideBackstagePage(id) / showBackstagePage(id)Toggle one File tab page.
hideBackstageCard(id) / showBackstageCard(id)Toggle one File tab action card.
hideContextMenuCommand(id) / showContextMenuCommand(id)Toggle one element context-menu entry.
hideCanvasContextMenuCommand(id) / showCanvasContextMenuCommand(id)Toggle one empty-canvas context-menu entry.
disableShortcut(id) / enableShortcut(id)Toggle one editor shortcut.
remapShortcut(id, chords)Move a command onto new chord(s); undefined restores the built-in chord.
setPanelVisible(id, visible)Show or hide a chrome region.
setFeatureEnabled(id, enabled)Switch a feature area on or off.
setDialogAvailable(id, available)Allow or remove a dialog and its entry points.

Shortcut chords ​

A chord is Modifier+Modifier+Key: modifiers are Mod (Ctrl on Windows and Linux, Cmd on macOS), Ctrl, Meta, Alt and Shift; the key is a KeyboardEvent.key value such as D, Delete, ArrowLeft or F2 (write Plus for +). Letters match case-insensitively. A remapped command stops answering to its built-in chord. Remapped chords keep every built-in guard: they never fire in a read-only viewer, during a slide show, while the user is typing in a text box, or (for selection commands) with nothing selected. nudge and escape can be disabled but not remapped.

Per-binding usage ​

tsx
import { useMemo, useRef } from 'react';
import { PowerPointViewer } from 'pptx-react-viewer';
import type { PowerPointViewerHandle, ViewerCustomization } from 'pptx-react-viewer';

export function Deck({ bytes }: { bytes: Uint8Array }) {
	const viewer = useRef<PowerPointViewerHandle>(null);
	// Memoise: a new object each render would replace helper edits.
	const customization = useMemo<ViewerCustomization>(
		() => ({ ribbon: { hiddenTabs: ['draw'] }, disabledFeatures: ['ai'] }),
		[],
	);
	return (
		<>
			<button onClick={() => viewer.current?.hideRibbonTab('insert')}>Hide Insert</button>
			<PowerPointViewer ref={viewer} content={bytes} canEdit customization={customization} />
		</>
	);
}
vue
<script setup lang="ts">
import { ref } from 'vue';
import { PowerPointViewer } from 'pptx-vue-viewer';
import type { PowerPointViewerExpose, ViewerCustomization } from 'pptx-vue-viewer';

defineProps<{ bytes: Uint8Array }>();
const viewer = ref<PowerPointViewerExpose | null>(null);
const customization: ViewerCustomization = {
	ribbon: { hiddenTabs: ['draw'] },
	disabledFeatures: ['ai'],
};
</script>

<template>
	<button @click="viewer?.hideRibbonTab('insert')">Hide Insert</button>
	<PowerPointViewer ref="viewer" :content="bytes" can-edit :customization="customization" />
</template>
ts
import { Component, viewChild } from '@angular/core';
import { PowerPointViewerComponent } from 'pptx-angular-viewer';
import type { ViewerCustomization } from 'pptx-angular-viewer';

@Component({
	selector: 'app-deck',
	imports: [PowerPointViewerComponent],
	template: `
		<button (click)="viewer()?.hideRibbonTab('insert')">Hide Insert</button>
		<pptx-viewer #viewer [content]="bytes" [canEdit]="true" [customization]="customization" />
	`,
})
export class DeckComponent {
	bytes: Uint8Array | null = null;
	readonly viewer = viewChild<PowerPointViewerComponent>('viewer');
	readonly customization: ViewerCustomization = {
		ribbon: { hiddenTabs: ['draw'] },
		disabledFeatures: ['ai'],
	};
}
svelte
<script lang="ts">
	import { PowerPointViewer } from 'pptx-svelte-viewer';
	import type { ViewerCustomization } from 'pptx-svelte-viewer';

	let { bytes }: { bytes: Uint8Array } = $props();
	let viewer: ReturnType<typeof PowerPointViewer> | undefined = $state();
	const customization: ViewerCustomization = {
		ribbon: { hiddenTabs: ['draw'] },
		disabledFeatures: ['ai'],
	};
</script>

<button onclick={() => viewer?.hideRibbonTab('insert')}>Hide Insert</button>
<PowerPointViewer bind:this={viewer} source={bytes} editable {customization} />
ts
import { createPptxViewer } from 'pptx-vanilla-viewer';
import type { ViewerCustomization } from 'pptx-vanilla-viewer';

const customization: ViewerCustomization = {
	ribbon: { hiddenTabs: ['draw'] },
	disabledFeatures: ['ai'],
};
const viewer = createPptxViewer(document.getElementById('deck')!, {
	source: bytes,
	editable: true,
	customization,
});

document.getElementById('hide-insert')!.addEventListener('click', () => {
	viewer.hideRibbonTab('insert');
});

Recipes ​

Kiosk: a viewer with no editing chrome ​

Read-only already hides the editing commands; this also removes everything a kiosk visitor could wander into.

ts
const kiosk: ViewerCustomization = {
	ribbon: {
		hiddenTabs: [
			'file',
			'home',
			'insert',
			'draw',
			'design',
			'transitions',
			'animations',
			'record',
			'review',
			'view',
			'help',
		],
		hiddenButtons: ['share', 'broadcast', 'export', 'undo', 'redo', 'record'],
	},
	hiddenPanels: ['inspector', 'notes', 'quickAccessToolbar'],
	disabledFeatures: ['ai', 'collaboration', 'comments'],
	hiddenDialogs: ['options', 'print', 'export'],
	contextMenu: { disableElementMenu: true, disableCanvasMenu: true },
	keyboard: { disableAll: true },
};

Leave slideShow (and the navigation and fullscreen buttons) visible so visitors can still present.

Hide the Settings pages users do not need ​

ts
const settings: ViewerCustomization = {
	options: {
		hiddenPages: ['proofing', 'addIns', 'trust', 'quickAccess', 'ribbon'],
		hiddenSections: ['general.startup', 'save.cache', 'advanced.print'],
		hiddenSettings: ['advanced.disableHardwareAcceleration'],
	},
};

To remove File > Options entirely, use hiddenDialogs: ['options'].

Pin the user identity, locale and theme ​

The author name comes from the signed-in user and must not be edited:

ts
viewer.lockSetting('general.userName', currentUser.displayName);
viewer.lockSetting('general.userInitials', currentUser.initials, true); // locked and hidden

Locale and theme are host props rather than Options settings. Pin them with your binding's locale and theme props (defaultLocale / locale, theme / defaultThemeKey, see the Localization and Theming guides), then remove the pickers:

ts
const pinned: ViewerCustomization = {
	options: {
		hiddenPages: ['language'], // the display-language picker
		hiddenSections: ['general.appearance'], // the viewer theme picker
	},
};

Remove AI and collaboration ​

ts
const noCloud: ViewerCustomization = { disabledFeatures: ['ai', 'collaboration'] };

With ai disabled the assistant stays off even if an ai config is passed, which lets one build ship to tenants with and without the add-on:

ts
viewer.setFeatureEnabled('ai', tenant.hasAiAddOn);

Trim the ribbon to a minimal set ​

ts
import { RIBBON_TAB_IDS } from 'pptx-react-viewer';

const keep = new Set(['file', 'home', 'insert']);
const minimal: ViewerCustomization = {
	ribbon: {
		hiddenTabs: RIBBON_TAB_IDS.filter((id) => !keep.has(id)),
		hiddenButtons: ['broadcast', 'record'],
	},
};

Company shortcuts ​

ts
const keys: ViewerCustomization = {
	keyboard: {
		disabled: ['newSlide', 'toggleShortcuts'],
		remap: { duplicate: 'Mod+Shift+D', group: ['Mod+G', 'Alt+G'] },
	},
};

Build your own admin screen ​

Every id list is exported as a runtime array, alongside the types: RIBBON_TAB_IDS, TOOLBAR_BUTTON_IDS, OPTIONS_PAGE_IDS, OPTIONS_SECTION_IDS, OPTIONS_SETTING_IDS, BACKSTAGE_PAGE_IDS, BACKSTAGE_CARD_IDS, ELEMENT_CONTEXT_MENU_COMMAND_IDS, CANVAS_CONTEXT_MENU_COMMAND_IDS, EDITOR_SHORTCUT_ACTION_IDS, VIEWER_PANEL_IDS, VIEWER_FEATURE_IDS, VIEWER_DIALOG_IDS and VIEWER_EXPORT_FORMAT_IDS. Render checkboxes from them, store the resulting object per tenant, and feed it back through setCustomization.

What is not customisable yet ​

  • Controls inside a dropped-down menu or gallery (a single entry of the Bullets library, one Shape Styles tile) are not addressable; hide the control that opens the menu instead.
  • The slide-show, slide-sorter and presenter keymaps. keyboard covers the editor keymap. The only show key it affects is F5 / Shift+F5, through the presentMode feature.
  • The keyboard-shortcut reference (the ? overlay and Options > Customize Ribbon > Keyboard Shortcuts) lists the built-in chords, not your remaps. Hide it with keyboard.disabled: ['toggleShortcuts'] and options.hiddenSections: ['ribbon.shortcutReference'] if that matters.
  • Inspector sections and the slide rail's own context menu are not addressable individually; hide the whole region with hiddenPanels.
  • Mobile layouts honour ribbon, menu, dialog and feature customisation, but the mobile bottom sheets have no panel ids of their own, and some mobile bottom-bar buttons (Slides, Notes, Format) stay visible when their panel is hidden (tapping them does nothing).
  • Quick Access commands a user added (for example Print) stay in the strip when their dialog is removed; they are inert rather than hidden.
  • presentMode removes the Slide Show tab and F5 / Shift+F5, but not every secondary "present" affordance (for example a view switcher's Present option in some bindings).
  • Vanilla has no update(options), so its customization option is the initial value only; change it at runtime with setCustomization and the other helpers. A change rebuilds the chrome (as setLocale does), which returns the ribbon to its first tab.
  • React's headless useViewerBuildingBlocks composition does not take a customization; use the PowerPointViewer component.

Reference ​

Generated from the shared id catalogues (bun run docs:customization); a unit test fails if an id is missing here.

Ribbon tabs (ribbon.hiddenTabs) ​

IdTab
fileFile
homeHome
insertInsert
drawDraw
designDesign
transitionsTransitions
animationsAnimations
slideShowSlide Show
recordRecord
reviewReview
viewView
helpHelp
shapeFormatShape Format
pictureFormatPicture Format
tableDesignTable Design
chartDesignChart Design
smartArtDesignSmartArt Design

Ribbon groups (ribbon.hiddenGroups) ​

IdGroup
home.clipboardClipboard
home.slidesSlides
home.fontFont
home.paragraphParagraph
home.drawingDrawing
home.arrangeArrange
home.editingEditing
insert.slidesSlides
insert.tablesTables
insert.imagesImages
insert.illustrationsIllustrations
insert.linksLinks
insert.commentsComments
insert.textText
insert.symbolsSymbols
insert.mediaMedia
draw.toolsDrawing Tools
draw.convertConvert
design.themesThemes
design.variantsVariants
design.customizeCustomize
transitions.previewPreview
transitions.transitionToThisSlideTransition to This Slide
transitions.timingTiming
animations.previewPreview
animations.animationAnimation
animations.motionPathMotion Paths
animations.advancedAnimationAdvanced Animation
animations.timingTiming
slideShow.startSlideShowStart Slide Show
slideShow.presentPresent
slideShow.setUpSet Up
slideShow.captionsCaptions & Subtitles
record.cameraCamera
record.recordRecord
record.manageManage
record.helpHelp
review.proofingProofing
review.accessibilityAccessibility
review.languageLanguage
review.commentsComments
review.compareCompare
review.protectProtect
review.inkInk
view.presentationViewsPresentation Views
view.masterViewsMaster Views
view.showShow
view.zoomZoom
view.windowWindow
help.helpHelp
shapeFormat.shapeStylesShape Styles
shapeFormat.wordArtStylesWordArt Styles
pictureFormat.pictureStylesPicture Styles
tableDesign.tableStylesTable Styles
chartDesign.chartLayoutsChart Layouts
chartDesign.chartStylesChart Styles
smartArtDesign.smartArtStylesSmartArt Styles

Ribbon controls (ribbon.hiddenButtons) ​

IdControl
home.clipboard.pastePaste
home.clipboard.cutCut
home.clipboard.copyCopy
home.clipboard.formatPainterFormat Painter
home.slides.newSlideNew Slide
home.slides.layoutLayout
home.slides.resetReset
home.slides.sectionSection
home.slides.slideTemplatesSlide templates
home.font.fontFamilyFont
home.font.fontSizeFont Size
home.font.increaseFontSizeIncrease Font Size
home.font.decreaseFontSizeDecrease Font Size
home.font.clearFormattingClear All Formatting
home.font.boldBold
home.font.italicItalic
home.font.underlineUnderline
home.font.strikethroughStrikethrough
home.font.shadowText Shadow
home.font.characterSpacingCharacter Spacing
home.font.changeCaseChange Case
home.font.fontColorFont Color
home.font.highlightColorText Highlight Color
home.font.superscriptSuperscript
home.font.subscriptSubscript
home.paragraph.bulletsBullets (toggle and gallery)
home.paragraph.numberingNumbering (toggle and gallery)
home.paragraph.decreaseIndentDecrease List Level
home.paragraph.increaseIndentIncrease List Level
home.paragraph.lineSpacingLine Spacing
home.paragraph.alignLeftAlign Left
home.paragraph.alignCenterCenter
home.paragraph.alignRightAlign Right
home.paragraph.justifyJustify
home.paragraph.columnsColumns
home.paragraph.textDirectionText Direction
home.paragraph.alignTextAlign Text
home.drawing.shapesShapes
home.drawing.arrangeArrange
home.drawing.quickStylesQuick Styles (Shape Styles gallery)
home.drawing.shapeFillShape Fill
home.drawing.shapeOutlineShape Outline
home.drawing.shapeEffectsShape Effects gallery
home.arrange.bringForwardBring Forward
home.arrange.sendBackwardSend Backward
home.arrange.bringToFrontBring to Front
home.arrange.sendToBackSend to Back
home.arrange.flipHorizontalFlip Horizontal
home.arrange.flipVerticalFlip Vertical
home.arrange.duplicateDuplicate
home.arrange.deleteDelete
home.arrange.groupGroup
home.arrange.ungroupUngroup
home.arrange.alignAlign
home.arrange.mergeShapesMerge Shapes
home.arrange.cropCrop
home.arrange.outlineWidthOutline width
home.editing.findFind
home.editing.replaceReplace
home.editing.selectSelect
insert.slides.newSlideNew Slide
insert.tables.tableTable
insert.images.picturesPictures
insert.illustrations.shapesShapes
insert.illustrations.smartArtSmartArt
insert.illustrations.chartChart
insert.links.linkLink
insert.links.actionAction button
insert.comments.commentComment
insert.text.textBoxText Box
insert.text.fieldHeader, date, slide number field
insert.symbols.equationEquation
insert.symbols.symbolSymbol
insert.media.mediaVideo / Audio
draw.tools.selectSelect
draw.tools.penPen
draw.tools.highlighterHighlighter
draw.tools.eraserEraser
draw.tools.penColorPen colour
draw.tools.penWidthPen width
draw.convert.inkToShapeInk to Shape
design.themes.browseThemesThemes gallery
design.themes.editThemeEdit theme
design.variants.colorsVariants: Colors gallery
design.variants.fontsVariants: Fonts gallery
design.customize.slideSizeSlide Size
design.customize.formatBackgroundFormat Background
transitions.preview.previewPreview
transitions.transitionToThisSlide.galleryTransition gallery
transitions.transitionToThisSlide.effectOptionsEffect Options
transitions.timing.soundSound
transitions.timing.durationDuration
transitions.timing.applyToAllApply To All
transitions.timing.advanceOnClickOn Mouse Click
transitions.timing.advanceAfterAfter
animations.preview.previewPreview
animations.animation.galleryAnimation gallery
animations.animation.effectOptionsEffect Options
animations.motionPath.galleryMotion path gallery
animations.advancedAnimation.addAnimationAdd Animation
animations.advancedAnimation.animationPaneAnimation Pane
animations.advancedAnimation.triggerTrigger
animations.advancedAnimation.animationPainterAnimation Painter
animations.advancedAnimation.removeRemove animation
animations.timing.startStart
animations.timing.durationDuration
animations.timing.delayDelay
animations.timing.reorderReorder
slideShow.startSlideShow.fromBeginningFrom Beginning
slideShow.startSlideShow.fromCurrentFrom Current Slide
slideShow.startSlideShow.customShowCustom Slide Show
slideShow.present.presenterViewPresenter View
slideShow.present.broadcastPresent Online
slideShow.setUp.setUpSlideShowSet Up Slide Show
slideShow.setUp.hideSlideHide Slide
slideShow.setUp.rehearseTimingsRehearse Timings
slideShow.setUp.recordRecord
slideShow.setUp.rehearseWithCoachRehearse with Coach
slideShow.captions.subtitlesAlways Use Subtitles
slideShow.captions.subtitleSettingsSubtitle Settings
record.camera.cameoCameo
record.record.fromBeginningFrom Beginning
record.record.fromCurrentFrom Current Slide
record.manage.clearClear
record.manage.resetReset to Cameo
record.help.learnMoreLearn more
review.proofing.spellingSpelling
review.proofing.thesaurusThesaurus
review.accessibility.checkCheck Accessibility
review.language.translateTranslate
review.comments.newCommentNew Comment
review.comments.deleteDelete
review.comments.previousPrevious
review.comments.nextNext
review.comments.showCommentsShow Comments
review.compare.compareCompare
review.compare.markAllReadMark all read
review.protect.readOnlyRead-only
review.protect.restrictPermissionRestrict Permission
review.ink.hideInkHide Ink
view.presentationViews.normalNormal
view.presentationViews.outlineOutline View
view.presentationViews.slideSorterSlide Sorter
view.presentationViews.notesPageNotes Page
view.presentationViews.readingViewReading View
view.masterViews.slideMasterSlide Master
view.masterViews.handoutMasterHandout Master
view.masterViews.notesMasterNotes Master
view.show.rulerRuler
view.show.gridlinesGridlines
view.show.guidesGuides
view.show.snapToGridSnap to Grid
view.show.snapToShapeSnap to Shape
view.show.addGuideAdd horizontal / vertical guide
view.show.selectionPaneSelection Pane
view.show.eyedropperEyedropper
view.show.notesNotes
view.zoom.zoomZoom
view.zoom.fitToWindowFit to Window
view.window.templateEditingEdit template elements
view.window.macrosMacros
help.help.optionsOptions
help.help.keyboardShortcutsKeyboard shortcuts
help.help.accessibilityAccessibility checker
shapeFormat.shapeStyles.galleryShape Styles gallery
shapeFormat.shapeStyles.shapeEffectsShape Effects gallery
shapeFormat.wordArtStyles.galleryWordArt Styles gallery
pictureFormat.pictureStyles.galleryPicture Styles gallery
pictureFormat.pictureStyles.pictureEffectsPicture Effects gallery
tableDesign.tableStyles.galleryTable Styles gallery
chartDesign.chartLayouts.quickLayoutQuick Layout gallery
chartDesign.chartStyles.changeColorsChange Colors gallery
chartDesign.chartStyles.galleryChart Styles gallery
smartArtDesign.smartArtStyles.changeColorsChange Colors gallery
smartArtDesign.smartArtStyles.gallerySmartArt Styles gallery

Toolbar buttons (ribbon.hiddenButtons) ​

IdWhat it removes
shareShare / collaboration button in the tab row and mobile toolbar.
broadcastBroadcast (present online) button.
exportExport button and the File > Export page.
undoUndo button in the quick-access strip.
redoRedo button in the quick-access strip.
recordRecord button and the Record ribbon tab.
notesNotes toggle in the status bar.
fullscreenFull-screen toggle.
zoomThe zoom cluster (zoom in, zoom out, fit).
navigationThe previous / next slide cluster.
mergeShapesThe Merge Shapes dropdown (Union, Combine, Fragment, Intersect, Subtract) in the Home tab Arrange group.
cropThe picture Crop control (crop mode, Crop to Aspect Ratio, Fill, Fit) in the Home tab Arrange group.

Options pages (options.hiddenPages) ​

IdPage
generalGeneral
proofingProofing
saveSave
languageLanguage
accessibilityAccessibility
advancedAdvanced
ribbonCustomize Ribbon
quickAccessQuick Access Toolbar
addInsAdd-ins
trustTrust Center
aiAI

Options sections (options.hiddenSections) ​

IdSection
general.userInterfaceUser Interface options
general.personalizePersonalize your copy of the viewer
general.appearanceViewer theme
general.fontsFonts
general.startupStart up options
proofing.autoCorrectAutoCorrect options
proofing.spellingOfficeWhen correcting spelling
proofing.spellingViewerWhen correcting spelling in the viewer
save.savePresentationsSave presentations
save.cacheCache Settings
accessibility.assistantMake your document accessible to others
accessibility.feedbackFeedback options
accessibility.displayApplication display options
advanced.editingEditing options
advanced.cutCopyPasteCut, copy, and paste
advanced.imageQualityImage Size and Quality
advanced.chartChart
advanced.displayDisplay
advanced.slideShowSlide Show
advanced.printPrint
ribbon.shortcutReferenceKeyboard Shortcuts
quickAccess.quickAccessOptionsQuick Access Toolbar options
trust.trustSettingsSecurity settings

Settings (options.hiddenSettings, options.locked, options.defaults) ​

IdTypeBuilt-in defaultLabel
general.displayOptimizationstring'appearance'When using multiple displays
general.showMiniToolbarbooleantrueShow Mini Toolbar on selection
general.enableLivePreviewbooleantrueEnable Live Preview
general.collapseRibbonAutomaticallybooleanfalseCollapse the ribbon automatically
general.collapseSearchByDefaultbooleanfalseCollapse the search box by default
general.screenTipStylestring'descriptions'ScreenTip style
general.userNamestring''User name
general.userInitialsstring''Initials
general.showStartScreenbooleantrueShow the Start screen when this application starts
general.enableCustomFontUploadbooleanfalseLet me add font files to this session
proofing.autoCorrectTwoInitialCapitalsbooleantrueCorrect TWo INitial CApitals
proofing.autoCorrectCapitalizeFirstLetterbooleantrueCapitalize first letter of sentences
proofing.autoCorrectCapitalizeDayNamesbooleantrueCapitalize names of days
proofing.autoCorrectSmartQuotesbooleantrueReplace straight quotes with smart quotes
proofing.autoCorrectHyphensToDashbooleantrueReplace hyphens (--) with dash
proofing.autoCorrectFractionsbooleantrueReplace fractions (1/2) with fraction characters (½)
proofing.autoCorrectOrdinalsbooleantrueReplace ordinals (1st) with superscript
proofing.ignoreUppercasebooleantrueIgnore words in UPPERCASE
proofing.ignoreWordsWithNumbersbooleantrueIgnore words that contain numbers
proofing.ignoreInternetAddressesbooleantrueIgnore Internet and file addresses
proofing.flagRepeatedWordsbooleantrueFlag repeated words
proofing.checkSpellingAsYouTypebooleanfalseCheck spelling as you type
proofing.hideSpellingErrorsbooleanfalseHide spelling errors
save.autoSavebooleantrueSave changes automatically (AutoSave)
save.autoRecoverIntervalMinutesnumber2Save AutoRecover information every
save.keepLastAutoRecoveredVersionbooleantrueKeep the last AutoRecovered version if I close without saving
save.defaultExportFormatstring'pptx'Save files in this format
save.cacheRetentionDaysnumber14Days to keep files in the local document cache
save.clearCacheOnClosebooleanfalseDelete files from the local document cache when they are closed
accessibility.showAccessibilityStatusbooleantrueShow accessibility status in the status bar
accessibility.feedbackWithSoundbooleanfalseProvide feedback with sound
accessibility.soundSchemestring'modern'Sound Scheme
accessibility.showShortcutKeysInScreenTipsbooleantrueShow shortcut keys in ScreenTips
accessibility.reducedMotionbooleanfalseReduced motion
advanced.autoSelectEntireWordbooleantrueWhen selecting, automatically select entire word
advanced.allowTextDragAndDropbooleantrueAllow text to be dragged and dropped
advanced.maximumUndoStepsnumber100Maximum number of undos
advanced.useSmartCutAndPastebooleantrueUse smart cut and paste
advanced.showPasteOptionsButtonbooleantrueShow Paste Options button when content is pasted
advanced.imageDefaultResolutionstring'highFidelity'Default resolution
advanced.doNotCompressImagesbooleanfalseDo not compress images in file
advanced.chartPropertiesFollowDataPointbooleantrueProperties follow chart data point
advanced.recentPresentationsCountnumber50Show this number of Recent Presentations
advanced.showVerticalRulerbooleanfalseShow rulers
advanced.showGridbooleanfalseShow grid
advanced.snapToGridbooleanfalseSnap to grid
advanced.disableHardwareAccelerationbooleanfalseDisable hardware graphics acceleration
advanced.disable3DRenderingbooleanfalseDisable 3D rendering (for performance)
advanced.pixelateMosaicAnimationbooleanfalseShow a mosaic effect for Pixelate transitions
advanced.openDocumentsViewstring'savedView'Open all documents using this view
advanced.slideShowShowMenuOnRightClickbooleantrueShow menu on right mouse click
advanced.slideShowShowPopupToolbarbooleantrueShow popup toolbar
advanced.slideShowPromptKeepInkAnnotationsbooleantruePrompt to keep ink annotations when exiting
advanced.slideShowEndWithBlackSlidebooleantrueEnd with black slide
advanced.printInBackgroundbooleantruePrint in background
advanced.printHighQualitybooleanfalseHigh quality
advanced.printUseMostRecentSettingsbooleantrueUse the most recently used print settings
advanced.printWhatstring'slides'Print what
advanced.printColorModestring'color'Color/grayscale
advanced.printHiddenSlidesbooleanfalsePrint hidden slides
advanced.printScaleToFitbooleanfalseScale to fit paper
advanced.printFrameSlidesbooleanfalseFrame slides
quickAccess.visiblebooleantrueShow Quick Access Toolbar
quickAccess.positionstring'above'Toolbar Position
quickAccess.showCommandLabelsbooleanfalseAlways show command labels
trust.openInProtectedViewbooleanfalseOpen presentations in Protected View
trust.allowExternalContentbooleantrueAllow external content (remote images and media)
trust.confirmExternalHyperlinksbooleantrueConfirm before opening external hyperlinks

File tab pages (backstage.hiddenPages) ​

IdPage
homeHome
newNew
openOpen
infoInfo
saveSave
saveAsSave As
printPrint
shareShare
exportExport
closeClose
accountAccount
optionsOptions

File tab cards (backstage.hiddenCards) ​

IdCard
protectProtect Presentation
inspectInspect Presentation
embedFontsEmbed Fonts
signaturesDigital Signatures
versionHistoryVersion History
saveAsPptxPowerPoint Presentation
saveAsPpsxPowerPoint Show
saveAsPptmMacro-Enabled Presentation
saveAsPptPowerPoint 97-2003 Presentation
pdfCreate PDF
pngExport current slide
videoCreate a Video
gifCreate an Animated GIF
jsonExport as JSON
copyImageCopy as Image
printPrint Presentation
shareShare with People

Element context menu (contextMenu.hiddenElementCommands) ​

IdEntry
copyCopy
cutCut
pastePaste
duplicateDuplicate
edit-textEdit Text
edit-pointsEdit Points
bring-forwardBring Forward
send-backwardSend Backward
bring-frontBring to Front
send-backSend to Back
ai-askAsk AI about this
ai-fixFix with AI
commentAdd Comment
hyperlinkEdit Hyperlink
table-insert-row-aboveInsert Row Above
table-insert-row-belowInsert Row Below
table-delete-rowDelete Row
table-insert-col-leftInsert Column Left
table-insert-col-rightInsert Column Right
table-delete-colDelete Column
table-merge-selectedMerge Selected Cells
table-merge-rightMerge Right
table-merge-downMerge down
table-splitSplit Cell
groupGroup
ungroupUngroup
cropCrop
merge-unionUnion Shapes
merge-combineCombine Shapes
merge-fragmentFragment Shapes
merge-intersectIntersect Shapes
merge-subtractSubtract Shapes
save-as-pictureSave as Picture...
edit-alt-textEdit Alt Text...
size-and-positionSize and Position...
format-shapeFormat Shape...
deleteDelete

Empty-canvas context menu (contextMenu.hiddenCanvasCommands) ​

IdEntry
pastePaste
layoutLayout
reset-slideReset Slide
format-backgroundFormat Background...
grid-and-guidesGrid and Guides
rulerRuler

Edit Points menu (contextMenu.hiddenEditPointsCommands) ​

IdEntry
add-pointAdd Point
delete-pointDelete Point
delete-segmentDelete Segment
open-pathOpen Path
close-pathClose Path
smooth-pointSmooth Point
straight-pointStraight Point
corner-pointCorner Point
straight-segmentStraight Segment
curved-segmentCurved Segment
exitExit Edit Points

Editor shortcuts (keyboard.disabled, keyboard.remap) ​

IdCommand
undoUndo (Ctrl/Cmd+Z).
redoRedo (Ctrl/Cmd+Y, Ctrl/Cmd+Shift+Z).
copyCopy the selection (Ctrl/Cmd+C).
cutCut the selection (Ctrl/Cmd+X).
pastePaste (Ctrl/Cmd+V).
duplicateDuplicate the selection (Ctrl/Cmd+D).
deleteDelete the selection (Delete, Backspace).
selectAllSelect every element on the slide (Ctrl/Cmd+A).
groupGroup the selection (Ctrl/Cmd+G).
ungroupUngroup (Ctrl/Cmd+Shift+G).
nudgeMove the selection with the arrow keys (disable only; not remappable).
prevSlidePrevious slide (ArrowLeft with nothing selected).
nextSlideNext slide (ArrowRight with nothing selected).
escapeEscape: leave the current mode (disable only; not remappable).
findFind (Ctrl/Cmd+F).
findReplaceFind and replace (Ctrl/Cmd+H).
toggleShortcutsKeyboard-shortcut reference (?, Ctrl/Cmd+/).
alignLeftAlign text left (Ctrl/Cmd+L).
alignCenterCenter text (Ctrl/Cmd+E).
alignRightAlign text right (Ctrl/Cmd+R).
alignJustifyJustify text (Ctrl/Cmd+J).
increaseFontSizeIncrease font size (Ctrl/Cmd+Shift+>).
decreaseFontSizeDecrease font size (Ctrl/Cmd+Shift+<).
copyFormatCopy formatting (Ctrl/Cmd+Shift+C).
pasteFormatPaste formatting (Ctrl/Cmd+Shift+V).
newSlideNew slide (Ctrl/Cmd+M).
hyperlinkInsert or edit a hyperlink (Ctrl/Cmd+K).
clearFormattingClear character formatting (Ctrl/Cmd+Space).
cycleSelectionNextSelect the next element (Tab).
cycleSelectionPrevSelect the previous element (Shift+Tab).
pasteSpecialPaste Special (Ctrl/Cmd+Alt+V).

Panels (hiddenPanels) ​

IdRegion
statusBarThe status bar under the canvas (slide counter, zoom, view buttons).
slidesPaneThe slide thumbnail rail on the left.
inspectorThe format / properties inspector on the right.
notesThe speaker-notes panel under the canvas.
quickAccessToolbarThe quick-access strip in the title bar (save, undo, redo, ...).
titleBarThe title bar above the ribbon (file name, quick access, account).

Features (disabledFeatures) ​

IdWhat it switches off
aiThe AI assistant: toolbar toggle, chat panel, AI context-menu entries, AI Options page.
collaborationReal-time collaboration: Share and Broadcast buttons, dialogs and File pages.
commentsCommenting: the Add Comment context-menu entry.
presentModeSlide-show entry points: the Slide Show ribbon tab.
editPointsEdit Points: the Edit Points context-menu entry and the point-editing mode it opens.

Dialogs (hiddenDialogs) ​

IdWhat it removes
optionsFile > Options (the Settings dialog) and the File tab entry that opens it.
shareThe Share dialog, its toolbar button, File > Share page and card.
broadcastThe Broadcast dialog and its button.
printThe Print dialog, File > Print page and card.
exportFile > Export page, its cards and the Export button.

Export formats (hiddenExportFormats) ​

IdFormat
pdfExport to PDF.
pngExport the current slide as PNG.
videoExport the deck as a video.
gifExport the deck as an animated GIF.
jsonExport the parsed deck as JSON.
copyImageCopy the current slide to the clipboard as an image.

Drawing tools (hiddenDrawingTools) ​

IdTool
freeformShapeFreeform: Shape
curveCurve

Released under the Apache-2.0 License.