What fSpy does, and how the Blender importer fits in
fSpy is an open-source app for Windows, macOS and Linux that matches a camera to a single still image. You drag line segments along edges that are parallel in the real world, and fSpy computes the focal length, orientation and position of the camera. It has a two vanishing point mode and a one vanishing point mode in which you supply the focal length; the principal point can sit at the image center, be placed by hand or come from a third vanishing point; and a reference distance sets the scale.
fSpy saves a .fspy project. The separate fSpy importer add-on reads it through File > Import > fSpy, creates a camera with the solved field of view, rotation, position and lens shift, sets the render resolution to the photo, and can add the photo as the camera's background. Both are free. The latest stable fSpy app is 1.0.3 from January 2019, with a 1.1.0 beta from April 2020. (Both repositories moved from the stuffmatic GitHub account to perarnia; old links redirect.)
Does the fSpy importer work in Blender 4.2 and 5.x?
This is what the official fSpy-Blender repository shows, checked in October 2026:
- The latest release is v1.0.3, published July 22, 2019. The most recent commit is from May 2022.
- It is a legacy add-on (a
bl_infoblock, noblender_manifest.toml), the format from before Blender 4.2 introduced extensions. - There are open reports for Blender 4.0, 4.1, 4.5 and 5.0 and newer. In those threads some users say v1.0.3 works in Blender 5.0 and 5.1 when installed from the zip; others report install or import failures.
- Two community pull requests, #92 and #93, repackage it as a Blender 4.2+ extension. Neither has been merged.
Blender 5.2's manual still documents installing legacy add-ons from a zip with Install from Disk, so the old format alone does not break it. The real risk is that it is unmaintained: if a future Blender version breaks it, there is no release to wait for.
How to keep using fSpy with Blender 5
- 1 Download the release zip, not the source
From the Releases page, download
fSpy-Blender-1.0.3.zipand keep it zipped. In Safari on a Mac, right-click and choose Download Linked File, because Safari otherwise unzips it. - 2 Install it as a legacy add-on
Open Edit > Preferences > Add-ons, choose Install from Disk in the drop-down menu at the top right, select the zip, then enable Import fSpy project.
- 3 Import in Object Mode
Use File > Import > fSpy with the 3D Viewport in Object Mode. Importing from Edit Mode fails with a context error (issue #87).
- 4 Make the imported camera the scene camera
The importer sets the viewport's camera, not the scene camera, so renders can still use an older camera. Select the imported camera and press Ctrl+Numpad 0 (Set Active Object as Camera).
Builds attached to the open pull requests are community builds, not official releases. If the official zip will not install, one of the in-Blender tools below is the safer route.
fSpy alternatives that run inside Blender
Perspective Plotter
Perspective Plotter by Mark Kingsnorth is the most established in-Blender replacement; its documentation says it was inspired by fSpy. You define perspective lines in the viewport and the camera updates in real time. It has 1, 2 and 3 point perspective modes, a measuring guide for scale and keyframe buttons for animating the camera. As of October 2026 it costs $18 on Superhive with 12 months of updates and support, and lists Blender 3.0 to 5.2 as supported.
Free extensions: Simple Camera Match and img2cube
Two add-ons on the official Blender Extensions platform, which only lists free and open-source extensions, support Blender 4.2 and newer. Simple Camera Match solves focal length, location and rotation live from X, Y and Z vanishing lines drawn in the camera view, using the 3D cursor as the anchor for position and scale. img2cube recovers focal length and rotation from two or three vanishing points and scales the scene from one known measurement. Both were first published in 2026, so test them on your own photo first.
Perspective Matcher in MotionMaster 3D
The Perspective Matcher is part of MotionMaster 3D, the camera tracking addon I build, and is included in the Standard tier. You drag two red and two green lines onto parallel edges in the photo; it computes the focal length and rotation live, puts the world origin at the origin handle, and sets the scale from the camera-to-origin distance. It is two-point only, with no 1-point or 3-point mode and no animation keys. If photo matching is all you need, Perspective Plotter or a free extension may suit you better; the Perspective Matcher makes sense when you also want camera tracking for video in the same addon.
fSpy vs Perspective Plotter vs Perspective Matcher vs manual matching
| Feature | fSpy + importer | Perspective Plotter | Perspective Matcher | Manual in Blender |
|---|---|---|---|---|
| Price | Free | $18 | Included in MotionMaster 3D Standard ($29.99) | Free |
| Where it runs | Standalone app, then import | Inside Blender | Inside Blender (Windows, Blender 5.1 and 5.2) | Inside Blender |
| Perspective modes | 1 or 2 vanishing points | 1, 2 or 3 point | 2 vanishing points | By eye |
| Scale from | Reference distance | Measuring guide | Camera-to-origin distance | A known object, by eye |
| Camera updates live | No, import after solving | Yes | Yes | Yes |
| Blender 5.x status | Importer last released in 2019; mixed reports | Lists Blender 3.0 to 5.2 | Built for Blender 5.1 and 5.2 | Always works |
How camera matching from a photo works
Lines that are parallel in the real world converge in a photo toward a vanishing point; extend two of them until they cross and you have it. Every tool on this page solves the same geometry from those points:
- Two-point perspective uses two horizontal directions at a right angle, such as the two walls at a building corner. With the principal point known, two perpendicular vanishing points give the focal length and the rotation. fSpy and the Perspective Matcher both work this way.
- Three-point perspective adds the vertical direction, which converges when the camera tilts up or down. Three perpendicular vanishing points also give the principal point: it sits at the orthocenter of the triangle they form.
- One-point perspective, a facade seen straight on, cannot give the focal length by itself, which is why fSpy asks you to enter it in that mode.
The focal length comes out in pixels first: the square root of the negative dot product of the two vectors from the principal point to each vanishing point. Converting to millimetres needs a sensor width (mm = px × sensor width ÷ image width). The angle of view is what counts, so 24 mm on a 36 mm sensor is the same camera as 16 mm on a 24 mm sensor.
The principal point is where the lens axis meets the image, normally the center. Cropping moves it, and a solver that assumes the center then gets the focal length and rotation wrong, so use the uncropped original or set the principal point by hand. Scale is never visible in one photo: a small model close up and a large building far away look the same. Every tool needs one real measurement, and an origin, the point that becomes the world origin in Blender.
How to match a Blender camera to a photo with the Perspective Matcher
These steps follow the Perspective Matcher documentation; the plan is the same in the other tools.
- 1 Pick a suitable photo
Use the uncropped original with clear straight edges in two horizontal directions at a right angle: two walls, a tiled floor, a table. Phone and wide-angle photos bend lines near the edges, so trace edges near the center where you can.
- 2 Add a camera
Add one with Add > Camera and make it the scene camera. Without a camera the start button reads No Camera in Scene.
- 3 Load the photo
In the 3D Viewport sidebar (N), open the MotionMaster 3D tab and the Perspective Matcher panel and click Load Image. It sets the render resolution to the photo and adds it as the camera's background image. For a cropped photo, enable Custom Principal Point and enter Center X and Center Y in pixels, measured from the bottom-left corner of the image.
- 4 Start matching
Click Start Perspective Match. The viewport switches to the camera view and shows two red lines (X axis), two green lines (Y axis) and a blue origin handle.
- 5 Drag the lines onto parallel edges
Put the red lines on two edges that are parallel in the real world, and the green lines on two edges at a right angle to them. Keep each pair long and far apart; short or nearly parallel lines make the result unstable. The camera updates live, and the panel shows the focal length in pixels and millimetres.
- 6 Place the origin and scale
Drag the blue handle to the point that should become the world origin, such as a building corner at ground level. Under Origin Point, set Distance to the real camera-to-origin distance if you know it (the default is 10 scene units).
- 7 Fix the orientation and apply
If the result faces the wrong way, Flip X, Flip Y or Flip Z orbits the camera 90 degrees around that world axis. Press Enter or click Done, then Apply to Camera. Ctrl+Z and Ctrl+Y undo and redo handle moves.

How to check the match and fix common problems
Add a plane or cube at the origin and look through the camera. Its edges should run toward the same vanishing points as the real edges. If they do not:
| Problem | Cause | Fix |
|---|---|---|
| "X lines are parallel (no vanishing point)" | The two lines of a pair never meet in the image | Trace edges that visibly converge; a facade seen straight on needs a one-point tool |
| "Lines are not orthogonal enough (invalid focal length)" | The two directions are not at a right angle in reality | Use two directions that really are perpendicular, like the walls of one corner |
| Focal length jumps when a line moves slightly | Vanishing points far away: a long lens or edges that barely converge | Use longer lines further apart, or a tool that accepts a known focal length |
| Match is offset, focal length is off | A cropped photo moved the principal point | Use the original or set the principal point |
| CG edges miss curved edges in the photo | Lens distortion | Undistort first; see lens distortion in Blender |
| Scene is the wrong size | One photo cannot show scale | Set Distance from a measurement, or scale from an object of known size |

Which option should you use?
| Your situation | Good fit |
|---|---|
| You know fSpy and the importer installs on your Blender | Keep using fSpy |
| You want the most established in-Blender tool, with 1 and 3 point modes | Perspective Plotter |
| You want a free tool inside Blender | Simple Camera Match or img2cube |
| You also need camera tracking for video, on Windows | MotionMaster 3D (Perspective Matcher is in Standard) |
| One quick shot with a simple box shape | Match it by eye in Blender |
Matching by eye needs no add-on: add the photo in Camera Properties > Background Images, set the render resolution to the photo's size, enable Camera to View under View Lock in the sidebar's View tab, and move the camera and change the focal length until a plane or cube lines up. It is slow and imprecise, but fine for a background element. For video instead of a still, you need a camera track; start with the complete Blender camera tracking guide.


