Spoof the GPS location of an iOS device from your computer — works through the regular USB pairing without jailbreaking.
This fork is based on the original master131/iFakeLocation.
On top of the original codebase the following has been done by @efebagri:
- Redesigned UI — refreshed Bootstrap layout, clearer controls, modal feedback and a dedicated Location Mode card with tabs for single locations vs. routes.
- Route mode — drop multiple waypoints on the map, pick a travel mode/speed preset and have the device walk/drive/cycle the route with a physics-aware speed profile (corner braking, traffic-light stops, ±15 % random jitter, pause/resume, loop).
- iOS 17, 18, 26 support — Apple removed the legacy
com.apple.dt.simulatelocationlockdown service starting with iOS 17, so this build delegates the modern path topymobiledevice3via a managedpymobiledevice3 remote tunnelddaemon (tested up to iOS 26.3.1). - macOS auto-tunneld — on macOS the tunneld helper is started for you via AppleScript on the first run; a single native password prompt is enough per session.
- .NET Framework 4.5 or newer (preinstalled on Windows 8/10/11)
- iTunes (Microsoft Store version or Win32/Win64 is fine)
- Visual C++ Redistributable for Visual Studio 2015
- .NET 6.0 Runtime for macOS 10.13 (High Sierra) or newer. Use the x64 build, even on Apple Silicon — the bundled native libraries are x64.
- .NET 6.0 Runtime
(the
dotnet-runtime-6.0package is enough).
-
Python 3.12+ and
pymobiledevice39.x or newer on yourPATH.Fastest path via
uv:curl -LsSf https://astral.sh/uv/install.sh | sh uv tool install pymobiledevice3Or via
pipx:pipx install pymobiledevice3
Verify:
pymobiledevice3 version # should print 9.x.x or newerIf
pymobiledevice3isn't on yourPATH, pointPYMOBILEDEVICE3_PATHat the absolute path before launching iFakeLocation.
Grab the latest build from the Releases page, or build from source (see below).
./start.shThe helper script sets DOTNET_ROOT=$HOME/.dotnet and launches the published binary.
On the first run:
- iFakeLocation checks whether
pymobiledevice3 remote tunneldis already running onhttp://127.0.0.1:49151. - If not, it spawns the daemon via AppleScript's
do shell script with administrator privileges. A native macOS password dialog will appear (shown as coming from osascript) — enter your login password once. - Your browser opens at
http://localhost:<port>.
Stopping the app (the Exit button in the UI or Ctrl-C in the terminal) also
terminates the tunneld daemon iFakeLocation started. If tunneld was already
running before you launched iFakeLocation, it is left alone.
To skip auto-start set IFAKELOC_NO_AUTO_TUNNELD=1 and run
sudo pymobiledevice3 remote tunneld yourself in a separate terminal.
PYMOBILEDEVICE3_TUNNELD_URL lets you point at a daemon on a different host/port.
Run iFakeLocation.exe. tunneld auto-start isn't wired up on Windows yet — open an
elevated PowerShell and run pymobiledevice3 remote tunneld before launching the
app if you need iOS 17+ support. The app will detect the running daemon.
chmod +x ./iFakeLocation
./iFakeLocation
# or via the dotnet runtime
dotnet ./iFakeLocation.dllSame tunneld note as Windows — run sudo pymobiledevice3 remote tunneld in a
second terminal before launching for iOS 17+.
- Plug in your iDevice and trust this computer when prompted.
- Click Refresh and select the device from the dropdown.
- Single Location tab: type an address or place name in the search box and hit Search, or double-click anywhere on the map to drop a pin. Click Set Fake Location.
- Route Mode tab: double-click to add waypoints, drag to adjust, right-click
to delete. Pick a travel mode (driving / cycling / walking) and a speed preset
(walking, running, cycling, city, highway, or custom). Tick Loop to replay
continuously. Click Start Route. Pause, Resume and Stop Route
buttons control playback. iFakeLocation queries the public OSRM server
(
router.project-osrm.org) for a real road route and builds a physics-aware speed profile from the per-segment annotations. - Confirm the fake location in Apple Maps / Google Maps. To clear it, click Stop Fake Location. If the device is stuck at the faked location, toggle Location Services off and on in Settings → Privacy.
The first request on an iOS 17+ device may show a Trust this computer prompt on the device itself — unlock the phone and tap Allow so the tunnel handshake can complete. Each command has a three-minute timeout.
A Developer menu also appears in Settings after the first run. Reboot the device to remove it.
iFakeLocation downloads the right developer image automatically. If the automatic
download fails, create a DeveloperImages/<ios-version>/ folder next to the
executable and drop the matching DeveloperDiskImage.dmg and
DeveloperDiskImage.dmg.signature files in:
(For iOS 17+ disk images are handled by pymobiledevice3 and personalised on the
fly — no manual download needed.)
Q: My device doesn't show up. Make sure it is plugged in, trusted with this computer, and visible in iTunes / Finder.
Q: "Unable to load shared library 'imobiledevice'"
Set DYLD_LIBRARY_PATH to the folder containing the bundled libimobiledevice
files, then run with explicit framework and runtime:
export DYLD_LIBRARY_PATH=$HOME/iFakeLocation/iFakeLocation/bin/Debug/net6.0/runtimes/osx-x64/native
dotnet run --project ./iFakeLocation/iFakeLocation.csproj --framework net6.0 --runtime osx-x64Q: Can't mount the image / generic mount error. Confirm the device is trusted with this computer. If anything stays broken, reboot the device — that fixes the vast majority of mount issues.
dotnet build iFakeLocation.sln -c Release -f net6.0
dotnet publish iFakeLocation/iFakeLocation.csproj -c Release -f net6.0 -r osx-x64 --self-contained falseThe self-contained switch can be flipped to true if you want the .NET runtime
bundled into the output.
- Original project — master131/iFakeLocation
- idevicelocation by JonGabilondoAngulo
- Xcode-iOS-Developer-Disk-Image by xushuduo
- pymobiledevice3 by doronz88
Released under the GNU General Public License — see LICENSE.
