PowerPoint review

PptxDiff

Compare two slides side by side — rendered with full fidelity, then diffed on text, fonts, color, alignment and position. Drop in a pair of .pptx files or review the sample.

Clear decisions ▾
Scope
Rows to (as shown in All pairs view)
"From" is after "To" — will be treated as a single row ({{ clearDecisionsRangeFrom }}).
Export ▾
Diff Screenshots ▾
{{ toastMsg }}
Reviewers:
{{ rc.display }}
Voting as: {{ activeLabel }}
{{ nt.from }} · {{ nt.timeStr }} · {{ nt.slideLabel }}
{{ nt.text }}
No notifications yet — mention a reviewer's @handle in a comment to notify them.
{{ historyChevron }}Approval history
{{ h.timeStr }} {{ h.text }}
No approvals, rejections, or comments yet.
{{ selfTestsChevron }}Regression self-tests
{{ selfTestSummary }}
{{ t.icon }} {{ t.name }} — {{ t.detail }}
{{ u.tag }}
{{ u.role }}
{{ u.name }}
Merge winner preview — per slide
{{ mr.label }}
{{ mr.winnerLabel }} (overridden)
Possible duplicate slides
{{ dn }}
Possible cross-deck duplicates
Sensitivity: {{ crossDupThresholdPct }}%
Skipped ({{ crossDupTotalComparisons }} slide-pair comparisons — too many for a quick scan).
{{ cn.text }}
Content checksums (SHA-256)
Before: {{ contentHashALabel }}
After: {{ contentHashBLabel }}
{{ contentChecksumAlgorithmLabel }}
Presentation-level differences
{{ dd.type }}
{{ dd.oldText }}→{{ dd.newText }}
{{ summaryText }}
{{ nChanges }} changed
{{ nAdds }} added
{{ nRemoves }} removed
{{ curRollupText }}
{{ cb.label }}: {{ cb.action }}
Slide master & layout — {{ themeMismatchNote }}
{{ masterA.layoutName }} · {{ masterA.themeName }}
{{ masterB.layoutName }} · {{ masterB.themeName }}
Transition: {{ transitionTypeB }}
Comments on this slide
{{ cm.author }} · {{ cm.timeStr }}
{{ cm.text }}
{{ rp.author }} · {{ rp.timeStr }}
{{ rp.text }}
{{ st.role }} {{ st.name }}
Slide {{ st.cur }} / {{ st.count }}
{{ p.prefix }}{{ p.text }}
{{ m.kindLabel }}
no text on this slide
Rendering…
{{ st.modeLabel }}

Differences ({{ diffCount }})

Click a row to highlight it on both slides
{{ d.type }}
{{ d.label }}
{{ t.w }}
{{ t.w }}
{{ d.oldText }} → {{ d.newText }}
{{ d.oldText }}→{{ d.newText }}
{{ d.oldText }}
Identical
These two slides match on every property checked.
Batch compare multiple deck pairs
Pair files by:
Drag to reorder:
⠿ {{ bf.name }}
Drag to reorder:
⠿ {{ bf.name }}
{{ batchProgressLabel }}
{{ br.nameA }} → {{ br.nameB }}
{{ br.summary }}
Show:
{{ pr.collapseIcon }}
{{ pr.label }}
{{ pr.primaryTag }} {{ et.label }} {{ pr.total }} changes {{ pr.commentCount }} comment(s) {{ pr.rollup.text }}
{{ p.prefix }}{{ p.text }}
no slide here
{{ errorMsg }}
⠿ {{ touchGhostName }}
Keyboard shortcuts
Approve current slideA
Reject current slideR
Previous / next slide← →
Toggle Single / All-pairs viewV
Toggle dark modeD
Focus comment boxC
Jump to next changed slideN
Show this help?
Shortcuts are disabled while typing in a text field, and most don't apply in Batch view.
{{ pendingConfirmTitle }}
{{ pendingConfirmBody }}
Import "{{ pendingImportName }}"
You have decisions, comments, or UI state from the current session that aren't in this file. Merge keeps everything from both (your current session's choices win on conflicts) — Overwrite replaces your current session entirely with the imported file.
On conflict:
Live push
Notion and Confluence's APIs typically block direct browser requests (CORS) — if a push fails for that reason, use the file-based export instead. Each field below has its own "Remember" checkbox — off by default; unchecking one immediately drops just that field from browser storage.
Slack webhook
Notion
Confluence
On push: