Protein Structure Viewer Compare, annotate, and publish predicted and experimental structures — entirely in your browser
Add structures or AlphaFold result ZIPs Drop files anywhere on this page, or choose PDB, CIF/mmCIF, JSON, CSV, A3M and ZIP files Multiple ZIPsLocal processingNo upload
Fetching contacts files.rcsb.org or alphafold.ebi.ac.uk. Files you open locally are never sent anywhere.
No structure loaded yetDrop a PDB, CIF, or AlphaFold ZIP anywhere on this page, or fetch an ID above
0 structures Mean pLDDT — Ready

Help and keyboard shortcuts

Getting structures in

  • Drop .pdb, .cif, .mmcif, or whole AlphaFold result .zip archives anywhere on the page.
  • Add AlphaFold *_confidences.json, *_summary_confidences.json, ranking_debug.json, or ranking_scores.csv to attach pTM, ipTM, ranking scores, and PAE to matching models.
  • Type an identifier to fetch it: a four-character PDB ID (1ubq), a UniProt accession (P69905), or an AlphaFold DB name (AF-P0DTC2-F1).

In the 3D view

  • Drag to rotate, scroll to zoom, right-drag or two-finger drag to pan.
  • Click any atom to inspect its residue, chain, and pLDDT, and to place a label.
  • Use Figure annotations in the Annotate tab to draw arrows, lines, residue markers, and text callouts by clicking atoms, and to add corner titles. They follow rotation and alignment and are included in PNG exports and reports.
  • Turn on Synchronized multi-view in the Compare tab to show up to six models in linked viewports. Dragging, spinning, or rocking any one of them moves them all.

Keyboard

← →Previous / next model
CStart or pause automatic cycling
FFit every panel to what it displays
SStart or stop spinning
X Y ZRotate 90° about that axis (Shift reverses); Shift + R resets orientation
Shift + FToggle full screen
1 – 6Jump to a tool tab
Ctrl/⌘ + ZUndo the last label, selection, measurement or annotation change; add Shift to redo
?Open this help
EscClose help, leave full screen, stop measuring

Your work is kept

The open models, annotations, domains, views and settings are saved in this browser a moment after every change. Reopening the page offers to restore them; Forget it discards the copy. Nothing leaves the browser. For anything you must keep, download scene JSON or a report.

How to cite

Cite the viewer and the rendering library it builds on. Each GitHub release is archived on Zenodo with its own DOI; the repository's CITATION.cff carries the current metadata.

  • Awuah, M. B. (2026). Protein Structure Viewer, version [software]. Zenodo. doi:10.5281/zenodo.22741487 (all versions; the release you used has its own DOI on Zenodo). github.com/mbaffour/protein-structure-viewer.
  • Rego, N. & Koes, D. (2015). 3Dmol.js: molecular visualization with WebGL. Bioinformatics 31(8), 1322–1324. doi:10.1093/bioinformatics/btu829.

Reading the numbers

  • pLDDT is per-residue local confidence. High pLDDT does not mean the relative placement of chains is right.
  • PAE and ipTM are what to read for interfaces and domain placement in complexes.
  • RMSD from the Compare tab is a visual-comparison aid. Always report the alignment method, chain mapping, and aligned Cα count alongside it.

Tips for figures and reviewers

  • Annotate → Compare this position takes the residue you have selected and, in every shown model, draws its side chain, writes that model’s own residue on it (Arg273, His273) and states whether the models agree — the one-press check on a wild-type and mutant pair. Positions are matched by the Cα pairing of the superposition once the models are aligned, and by chain and residue number otherwise. After Align visible the same press also measures what the substitution did: a neighbourhood table of every residue with a heavy atom within the cutoff of the site, each row giving its Cα deviation from the reference in every other model, with Highlight neighbourhood and an effect CSV. A binding site is several residues, so the same block takes a set: type A:20-30, A:45 (or bare numbers and ranges, which use the chain of the selected residue) into Positions and press Compare these positions — every one of them is compared in one press and one undo step, up to 40, any that fewer than two shown models carry being skipped and counted, and the table then opens with a row per site followed by the union of their neighbourhoods. Make site figure then turns the comparison into a finished two-panel figure in one press: panel A an overview of the superposed models with the site marked, panel B a close-up of the site with the side chains and each model’s label, the reference model solid and the others faded. With the models superposed and Deviation panel on, a panel C follows: the same close-up, every model solid and coloured by how far each residue moved from the reference, blue under 1 Å to red 8 Å and over, with the band scale as its legend. The panels are saved as views, ticked as the only panels of the figure builder in two columns (three with the deviation panel), and the Publish tab opens at the builder ready for Download figure PNG or SVG; ⌘Z takes the whole press back.
  • Publish → Figure format saves the same figure as PNG or TIFF with the resolution in the file, as a PDF whose page is the physical size you chose, or as JPEG or WebP for slides; Download figure SVG stays the vector option with editable text.
  • After Align visible, RMSF profile SVG/PNG plots the per-residue Cα spread across the aligned models, one panel per chain with the agreement bands behind the trace, and the same plot is a panel of the composite figure — the ensemble counterpart of the pLDDT profile.
  • Compare → Pairwise RMSD → Compute matrix superposes every shown model onto every other with the same rules as Align visible and tabulates the Cα RMSDs — which models of an ensemble agree, which is the odd one out — with a mean column, a ★ on the medoid, a CSV, a heat-map PNG or SVG with the values in the cells, and a panel for the composite figure. Use medoid as reference superposes everything onto that model and draws it solid against the rest.
  • Compare → Match identical chains by position re-pairs the chains of an assembly by where they sit after a first fit, so a model that puts the same subunit in a different place is compared against the copy it actually corresponds to; the chain mapping it chose is printed with each result.
  • Compare → Fit on superposes the visible models using only part of the structure — a chain, a residue range such as A:20-140, or the residues you have selected — and reports the RMSD over that region beside the RMSD over every matched residue, which is how a hinge or a shifted domain is shown.
  • Labels are draggable: pick up any label, callout or corner title in the 3D view with the mouse and put it where the figure needs it. A residue label keeps a thin leader line back to its residue, and Reset in its row puts it back. Labels that land on top of each other — one per model at the same residue of superposed models — are stacked apart automatically when a position is compared and when the site figure is built; Separate labels does it again at the framing you are looking at, and never moves a label you placed yourself. Publish → Legend position moves the colour legend to any corner, or stacks it down the left or right side.
  • Label domains (Annotate → Domains, or beside the PAE domains) writes each domain's name on the structure at its centroid, in the domain colour and with the legend's names; Download architecture PNG/SVG draws the linear domain diagram — one row per chain, coloured boxes with names and boundary residue numbers — which is also a composite-figure panel and an optional row under the panels of the figure builder.
  • Publish → Figure builder turns saved views into the panels of one lettered figure: tick the views to include, order them, caption each, choose the columns, and download PNG or SVG at the output width and resolution — each panel rendered from its own camera and colour scheme at the same text size, with its legend and scale bar. The figure is as wide as the chosen figure width however many panels it has.
  • Publish → Save template keeps the whole presentation of a figure — panel columns, captions, panel letters, per-panel legends, the architecture row, the output mode with its width, resolution and text size, the figure format, and the legend position, legend switch and scale bar — under a name in this browser, and Apply puts every one of those controls back, so the second and third figures of a paper are drawn exactly like the first. A template holds no data: not the ticked views, the models, the camera, the colours or any file name, so one saved for an earlier project is safe to apply to this one. Up to 20 are kept; saving a name that already exists replaces it. The current settings also travel in the scene JSON and in share links.
  • Edit labels on the colour legend (or Publish → Edit figure labels) renames the legend title and entries as they will read on the figure — "N-lobe" for a PAE domain, a protein name for an entity — on screen, on every PNG, TIFF and SVG export and in the generated legend text; the data are untouched and the names travel with the scene.
  • Publish → Write methods text drafts a Methods paragraph stating exactly how the numbers on screen were computed (superposition, RMSD, RMSF, domains, contacts, dimensions, colour scales); every definition is cross-checked against Biopython in the repository's VALIDATION.md.
  • The shared report reproduces the outline, depth cueing and faded chains, and shows the contact map beside the PAE heatmap when one was computed for a model in the report.
  • Confidence → Colour by MSA reads the alignment inside an AlphaFold 3 archive (or an .a3m you add) and colours matching chains by conservation (Henikoff position-based sequence weights by default, switchable), identity to the query or coverage; the legend, exports and methods text follow.
  • Publish → Download composite figure stitches the 3D view with the PAE heatmap, the pLDDT profile and the contact map into one lettered figure at print size, each panel rendered at output resolution.
  • The Publication checklist at the foot of the Publish tab lists what a journal or reviewer would flag about the current figure — no physical size, low resolution, small text, colour-blind-unsafe colours, missing legend, scale bar in perspective, unsuperposed models, no title — with one-click fixes.
  • Compare → Interface contact map draws every residue pair of two chains within a cutoff, closer pairs darker; hover reads the pair, a click selects both residues, Highlight interface colours the interface, and the map and pair list download as PNG and CSV. Annotate → Label style switches every label between boxed and plain text.
  • Appearance → Outline draws a silhouette line around every element (thin for most figures, bold for small panels) and Depth cueing fades the far side; both apply to panels and exports. In the composition table, Faded blends a chain into the background to spotlight the others. Publish → Journal preset sets width, resolution, text size and font from a journal's figure guide, and Download one panel per model renders every model from the same camera into one lettered figure.
  • The layout button in the header (panel icon) switches between the side-panel workspace, where the 3D view stays pinned while you work in the scrolling tool panel, and the stacked layout. The tool panel sits on the left; the arrows button beside it swaps the two sides. Drag the divider between them to give tables more room; double-click it to reset. Screens narrower than 1100 px always stack.
  • Publish → Save session file writes one ZIP with the models, confidence data, alignment, annotations, domains, views and settings; open it later with Open session file or by dropping it on the page, on any computer, with no other files. Scene JSON remains the light option that expects the original files.
  • Large AlphaFold 3 archives open whole: the confidence files are scanned byte by byte, the unused contact matrix is skipped and the PAE is kept compactly, so a five-model, 4 400-token assembly stays well under a gigabyte of memory.
  • Colour by pLDDT confidence and switch to orthographic projection for publication panels; perspective exaggerates whatever is closest to the camera.
  • Run Align visible, then enable multi-view with Rotation and zoom to inspect a superposition panel by panel. The shared report carries the aligned coordinates.
  • Save named views with captions in Publish: they become lettered figure panels, a caption file, and a guided tour inside the report.
  • Rename a model in the Models list to give it the name a caption should carry; file names stay as identifiers underneath.
  • Download comparison PNG stitches the current panels into one lettered figure at the export size you chose; the SVG variants keep labels, arrows, captions, and the legend as editable vector layers over the rendered molecule.
  • Every residue label and annotation is editable in its list row — text, colour, and size — and can be nudged with the arrow buttons; it moves in screen space and stays put when the model turns. Callouts also take a leader length.
  • Interfaces in the Confidence tab counts inter-chain contacts and buried surface area for a model, and can highlight the interface residues. Read it next to ipTM and PAE; a predicted contact is not an observed one.
  • Tick Embed 3Dmol.js for offline use before sharing a report that must open without internet; drop the PAE detail to Compact or Omit to keep it small.
  • Keep Report contents on Models currently shown for a small file reviewers can open on a laptop; switch to Every loaded model for an archive.

Everything runs locally. Structure files you open are read in the browser and are never uploaded.