About SAED indexing, and how this tool works
Indexing a selected-area electron diffraction (SAED) pattern means assigning Miller indices (hkl) to the diffraction spots and identifying the zone axis [uvw]: the crystallographic direction along which the electron beam travels through the crystal. It is one of the most common tasks in transmission electron microscopy (TEM), and one of the most error-prone to do by hand with a ruler and a table of d-spacings.
Three clicks
Click the transmitted beam and the two shortest independent spots. The tool measures R₁, R₂ and the angle between them.
No calibration needed
The ratio R₂/R₁ and the angle do not depend on the camera constant, so no camera-length calibration is needed.
Pick strong inner spots
Superlattice, twin and double-diffraction spots can sit closer to 000 than the true fundamentals. Pick two short, strong spots of the innermost net.
Check the overlay
Matching zone axes are ranked, and a predicted net is drawn on your image so you can check the answer against the actual spots.
More detail: how the ratio method works here
This tool automates the classic ratio method. You upload a diffraction pattern, click the transmitted (central) beam and the two shortest independent spots, and it measures the two reciprocal distances R₁ and R₂ and the angle between them. Because the analysis uses the ratio R₂/R₁ together with the inter-spot angle, the camera constant cancels out. No camera-length calibration is needed. One habit keeps the method honest: pick two short, strong spots that clearly belong to the innermost net. The nearest spots are not automatically the right pair; superlattice reflections, twins and double diffraction can plant fainter spots closer to 000 than the true fundamentals, which is exactly what the extra-spot checks below are for. The measured ratio and angle are compared against every allowed reflection pair for the chosen structure, and matching zone axes are ranked. A predicted diffraction net is then overlaid on your image so you can verify the assignment against the actual spots rather than trusting a table.
Supported crystal structures
Built-in structure-factor rules cover FCC (e.g. Al, Cu, Ni, austenitic steels), BCC (e.g. ferrite, W, Mo), simple cubic, diamond cubic (Si, Ge), and HCP (e.g. Ti, Zn, Mg), plus a custom-lattice mode where you supply your own lattice parameters.
What Auto-detect spots does, and why it works on bad patterns
Real patterns are rarely clean. The illumination is uneven, the transmitted beam is clipped and blooming, spots are streaked or all elongated along one axis because the stigmators are off, the camera has hot pixels and a dead column, a beamstop covers 000, and a twin or a precipitate has planted a second net on top of the first. Auto-detect is built for that case, and every stage is there to defeat one of those problems.
- Dead rows and columns are repaired first. A one-pixel dark line is a step edge, and any band-pass spot filter answers a step edge with a positive lobe down each side. Left alone, one dead column becomes a column of phantom spots. A beam-stop arm that lies along a row or column is left alone: a dead or hot line is one or two pixels wide, and the arm is wider. When the file uses only every second or third grey value (a dim pattern saved as 8 bits, or a low-count frame), a line must stand out by at least four of those grey steps, so rounding to the nearest grey value is not taken for a camera line.
- The background is flattened locally. Vignetting, a gain gradient, the inelastic halo and the direct beam’s own skirt are all smooth on the scale of a spot, so a low percentile inside each cell of a coarse grid is background by construction. Subtracting it, and dividing by the local noise measured on the same grid, means a faint outer reflection is judged against its own neighbourhood instead of against the direct beam.
- Spots are found at every scale at once, by a scale-normalised difference of Gaussians rather than by looking for bright pixels. This matters most for a saturated direct beam: on a clipped flat top every pixel ties for brightest, so a plain local-maximum test produces a ring of phantom satellites around 000, and the two shortest of those get picked as the basis. A blob filter peaks at the centre of the flat top instead.
- Hot pixels and X-ray strikes are removed on a support test. A Bragg spot is several pixels across, so most of the intensity in its own neighbourhood belongs to its neighbours. A spike carries nearly all of its own.
- The beam stop is found and its edge is ignored. The straight edge of a beam stop leaves a row of evenly spaced false peaks that can pass for a net, so peaks on a dark area well below the background round it, or along its edge, are left out unless they are brighter than everything round them (as the direct beam seen through a thin stop is).
- Positions come from three different centroids depending on what the spot is: the centre of the plateau for a clipped spot (its intensity centroid is meaningless), a core-weighted centroid for a streak, and a plain weighted centroid otherwise.
- The reciprocal net is found from the vectors between spots, not from 000. Difference vectors do not depend on where the transmitted beam is, and for a lattice they pile up at lattice translations while noise contributes only a diffuse background. Candidate nets are then scored on how full they are: a net that is too fine explains every spot but predicts a crowd of nodes with nothing on them, which is how a superlattice, twin or precipitate net is stopped from hijacking the matrix basis. Nodes that fall outside the image are not counted as empty, since no spot could be recorded there. Only confident spots vote, each direction is counted once, and each short vector is also tried with the next few vectors that are not parallel to it. That way a long thin net, such as BCC [112] whose long side is 2.45 times the short one, is found too.
- 000 is chosen last, as the node the pattern fades away from. Spots get weaker as |g| grows, because the atomic scattering factor falls with scattering angle (Williams and Carter, Transmission Electron Microscopy, 2nd ed., Springer 2009), and the diffuse background, mostly inelastic scattering, is peaked round the transmitted beam (Egerton, Electron Energy-Loss Spectroscopy in the Electron Microscope, 3rd ed., Springer 2011). So about the true 000, of any two spots the nearer one is nearly always the brighter one, while about any other node that order breaks down on one side. Each node is scored on how often the nearer spot is the brighter one and on how strongly brightness falls with distance (the correlation coefficient), because on a net with one short side a shift of one step along it changes few of those orders. That places 000 correctly behind a beamstop, inside a bloom, when a diffracted beam is brighter than the transmitted one, and when 000 is near the edge or in a corner of the image. Friedel’s law (g and −g are equally bright) is used as a check, but only for spots whose −g position is inside the image: a partner beyond the edge was never recorded, so it does not count as missing.
- 000 must be a node of the net. Every spot sits at 000 plus a lattice vector. In diamond-cubic Si on [011] the 200 nodes are empty (a systematic absence), and the 111-type spots alone then form a coarser net, twice the cell, with every node filled. The other spots, 000 among them, all sit at the centres of its cells. When 000 lies among such a group of spots off the net, the missing half-cell vector is added. A group off the net that does not hold 000 (superlattice, twin or precipitate spots) is left for Check extra spots.
- g₁ and g₂ come from a least-squares fit to every spot on the net, not from two clicked spots. This is the largest single gain in accuracy: two clicks carry the full error of two centroids, whereas the fit averages several dozen. Noise peaks that sit well off their node are left out, judged against the stronger half of the spots, and each node counts once.
- Astigmatism is separated from real streaking. If most spots are elongated along one common axis it is the instrument, not the specimen, and the Pattern quality panel says so. Only spots elongated against that axis are reported as relrods.
Auto-detect will also say that it cannot fit a net rather than invent one. That is the correct answer for a pattern that is polycrystalline, badly overlapped, or too far gone, and it is the answer you want from a tool you are about to quote in a thesis. A net whose spots sit loosely on its nodes is refused too: real reflections sit on their nodes to about a pixel, while noise peaks that line up by chance do not.
The one artifact this tool cannot fix, and what to do about it
What it is
Elliptical distortion of the projector system turns a circle into an ellipse. The same {hkl} family then measures a different d-spacing at different azimuths.
How large
Reported values run from 0.38% on a well-characterised machine to a 2% installation specification. At 1%, a reflection 500 px out moves 5 px.
Why one pattern cannot fix it
A net gives two shape numbers, a length ratio and an angle. The distortion adds two unknowns, an amplitude and an axis.
What the tool does instead
It ranks candidates by the stretch each one needs, checks which nodes of the net are occupied, and says so in the Pattern quality panel when the leaders are too close to call.
More detail: reported sizes, the counting argument and what the tool does
Elliptical distortion of the projector system is the geometric artifact that defeats calibration-free indexing, and no amount of algorithm will remove it from a single spot pattern. The recorded net is the true net carried through a linear map, so a circle images as an ellipse and the same {hkl} family measures a different d-spacing at different azimuths. Reported magnitudes are 1.6–1.9% across camera lengths on one instrument (Capitani et al. 2006), a 2% installation specification with 1.6% as-installed falling to 0.3% after stigmator optimisation (Mitchell 2022), and 0.38–0.39% on a well-characterised machine (Brázda et al. 2022). At 1% and a reflection 500 px out, that is a 5 px radial displacement, two orders of magnitude above the sub-pixel precision of the peak finder.
The reason it cannot be solved from one pattern is a counting argument: a two-dimensional net gives you two shape observables, a length ratio and an included angle, and the distortion adds two unknowns, an amplitude and an axis. Brázda et al. state the same conclusion, that elliptical distortion is the one distortion that cannot be separated from the lattice parameters without external information. So this tool does three things instead of pretending otherwise. It ranks candidates by how much anisotropic stretch each one needs rather than by ratio and angle separately, so the correct zone axis stays in contention instead of falling out of tolerance. It checks each candidate against which nodes of the net are actually occupied, since a wrong candidate that happens to match the distorted shape rarely also predicts the right extinctions. And when the leading candidates are separated by less than the distortion a real instrument carries, it says so in the Pattern quality panel instead of letting rank 1 look decisive.
If you have calibrated your instrument, enter the ellipticity and its axis in the Crystal panel, or press Load saved calibration to pull them from the distortion calibrator, and the distortion is removed before anything is measured. Entering a camera constant so absolute d-spacings can discriminate, or tilting to a second zone axis, are the other two ways out.
Tips for reliable indexing
Use an on-axis pattern
A clean, symmetric single-crystal net. Not rings or overlapping grains.
Prefer Auto-detect
It fits the net to every spot at once. If you click, zoom in first and keep snap to spot centroid ticked.
Check the overlay
A correct index reproduces all spots of the net, not just the two you used.
Read Pattern quality
It tells you whether 000 was seen or reconstructed, whether spots are clipped, and whether an elongation is really your stigmators.
More detail: why Auto-detect beats clicking at high-symmetry zones
Use an on-axis single-crystal pattern (a clean symmetric net, not rings or overlapping grains). Prefer Auto-detect over clicking: it fits the net to every spot at once, so it does not carry the error of two hand-placed centroids, and at high-symmetry zones such as 〈100〉 and 〈112〉 that error is the whole ballgame (with no camera constant entered, those zones show genuine ratio and angle ties between different families, and a fraction of a pixel decides which one is ranked first). If you do click, zoom in first and leave snap to spot centroid ticked. Always check the overlay: a correct index reproduces all spots of the net, not just the two you used. Read the Pattern quality panel before you believe the answer: it tells you whether 000 was actually seen or reconstructed, whether spots are clipped, and whether the elongation you are about to call a relrod is really your stigmators.
Checks on your data
- Measuring error of the ratio and the angle. The ± after R₂/R₁ and φ is one standard deviation, worked out from the position error of the points by first-order error propagation. After Auto-detect the error comes from the least-squares fit of the whole net. For clicked points the page assumes 1 px per point, or measures it from three or more extra spots on the net. A spot close to 000 is measured badly: with both spots 50 px out, 1 px on each point already gives about 4% on the ratio.
- Zone axes that fit equally well. If two or more different zone axes match both the ratio and the angle inside that error (the 95% level for two numbers, chi-square 5.99), the page lists them and says ratio and angle cannot decide. A candidate is not counted when other allowed spots of its own zone sit inside the cell of its g₁ and g₂, or on the edges of that cell, because it predicts spots between yours. The two shortest allowed spots do not always make such a cell: on an HCP [010] zone (001) is absent, so (100) and (002) are the two shortest, yet (101) sits halfway along an edge of their cell. After Auto-detect, a candidate that puts more of the found spots on nodes its own structure forbids than rank 1 does is not counted either: those spots rule it out.
- Ranking within the projector distortion. The Pattern quality panel compares rank 1 with the best candidate of a different zone axis, after the candidates for this pattern are ranked. A second basis of the same zone is not a rival answer. Nor is a candidate that puts more of the found spots on forbidden nodes than rank 1 does, because the check of which nodes are occupied has already ruled it out.
- Clipped spots in TIFF and EMD files. These files are log-scaled for display, so the clipped test reads the file’s own values: pixels at the highest value in the file, shared by more than one pixel, are clipped. A pixel at the top of the range carries no information about how bright the spot really was.
- Points at the edge. A clicked point outside the image measured nothing. A point less than 9 px from the edge has its centroid window cut by the frame, which pulls the centre inward.
- Which nodes are occupied. After Auto-detect, allowed nodes that fall outside the image are not counted as missing, since nobody could see them. When a basis marker is placed on the −g side of 000, the node indices are flipped with it, and when you drag a marker onto a different spot the old node list is dropped instead of being misread.
- Image size. Every format now needs at least 64 × 64 pixels (4096 in all), the same minimum the EMD reader already used.
- CIF with missing atoms. If sites could not be read, or the symmetry operations are not in the file, the warning is repeated next to the answer, because the allowed reflections come from the atoms.
- Camera constant. The page gives the camera constant the selected answer implies, from the camera equation R d = λL (Williams and Carter, Transmission Electron Microscopy, 2nd ed., Springer 2009). If it does not match your calibration for that camera length, the answer is wrong or the calibration is for another setting.
Privacy
The tool runs entirely in your browser; your image is never uploaded to any server.
More TEM guides on this site:
the back focal plane & diffraction focus ·
CBED & lamella thickness from K–M fringes ·
about the author
Cite this page: Tripathy, Manisha. “SAED Zone-Axis Indexer.”
untethered atom, 2026, https://untetheredatom.com/tem/saed-zone-axis-indexer.
BibTeX
@misc{tripathy2026saedzoneaxisindexer,
author = {Tripathy, Manisha},
title = {SAED Zone-Axis Indexer},
year = {2026},
howpublished = {\url{https://untetheredatom.com/tem/saed-zone-axis-indexer}},
note = {Interactive teaching resource}
}
Last updated 16 October 2026.