DEV Community

Cover image for How to Transfer Files from PC to iPhone over Wi-Fi
Programmatic DIB
Programmatic DIB

Posted on AI-assisted

How to Transfer Files from PC to iPhone over Wi-Fi

You have a PDF, a ZIP archive, or a video on your computer. You want it on your iPhone. The devices are on the same Wi-Fi, but getting that file across can still involve a cable, an account, or a cloud-upload step.

I built PC to iPhone Share for a smaller workflow: choose one computer folder, open it in your phone's browser, and download what you need directly over the local network.

It is MIT licensed, written in Go, and download-only. Windows, macOS, and Linux host the server; iPhone, iPad, and Android devices use their browsers.

There is one setup step worth understanding before you download it: the phone needs to be paired with the computer's local HTTPS certificate. This is an unsigned alpha, and that pairing is manual.

What the transfer looks like

The computer serves the selected folder over HTTPS. Safari opens the file browser after you sign in with the generated share password. Tapping a filename starts a browser download.

Selected computer folder
          |
          | HTTPS on your local network
          v
Phone browser -> sign in -> choose a file -> download
Enter fullscreen mode Exit fullscreen mode

The running app does not upload files to a cloud service, use a relay, or require a phone app. You do need internet access initially to download the release or build tools.

PC to iPhone Share file browser showing synthetic example files, folder navigation, search, and download sizes

Actual interface with synthetic screenshot data. This is a browser capture, not a physical iPhone screenshot. It contains no real shared folder, password, or network address.

Download the portable app for your computer

The v0.1.0-alpha.1 release includes six portable builds:

Computer Processor choices Archive
Windows Intel/AMD x64 or ARM64 ZIP
macOS Intel x64 or Apple Silicon ARM64 ZIP
Ubuntu and Linux x64 or ARM64 TAR.GZ

Choose the archive for the computer hosting the folder, rather than for the phone receiving files. Ubuntu uses the Linux build; an ARM64 computer needs the ARM64 archive.

The packaged executables include the web interface. You do not need Go, Python, or Node installed to run them. These are portable console programs, not App Store packages or automatically installed background services.

Download SHA256SUMS alongside the archive and compare the checksum for its exact filename. The installation guide includes Windows, macOS, and Linux checksum commands. A matching checksum verifies the downloaded bytes against the release manifest; it is not an independent publisher signature.

Transfer files from Windows PC to iPhone: the first download

1. Extract and start on the computer

Extract the ZIP before running it. On Windows, start Start-PC-to-iPhone-Share.cmd or pc-to-iphone-share.exe.

Choose a dedicated folder containing only the files you intend to share. Keep the app and its private settings outside that folder. Select the actual private Wi-Fi or LAN interface reachable by your phone.

The console prints a local management dashboard URL. Open that on the computer. It contains the setup details and the generated share password; keep the management URL private.

2. Pair the iPhone with your local certificate

Join the same reachable network on the iPhone. Use the separate phone URL displayed in the dashboard.

A private network address does not automatically have a publicly trusted HTTPS identity. The app creates a local certificate authority for the installation, and the receiving device needs to trust its public certificate.

Verify the certificate fingerprint against your computer's dashboard through a trusted channel. Install only your own computer's public certificate profile. On iPhone or iPad, manually installed certificates also require enabling trust under Settings -> General -> About -> Certificate Trust Settings.

Follow the project's certificate pairing guide. Apple documents the manual certificate trust step separately. Trusting the certificate on your computer does not pair the phone for you.

3. Sign in and download in Safari

Open the exact HTTPS phone URL, enter the generated share password, and tap a file. Use the app's share password, not your Windows account password.

Check Safari's download manager or the Files app for the downloaded file. Downloading a photo archive or music file does not automatically import it into Photos or Music.

Keep the computer awake and the app running until the transfer finishes. When you are done, use Stop sharing in the local dashboard or stop the console process with Ctrl+C.

Can I transfer files from Ubuntu to iPhone too?

Yes: the same browser-download workflow uses the Linux host. Extract the matching TAR.GZ archive and run the binary from a terminal:

./pc-to-iphone-share --version
./pc-to-iphone-share
Enter fullscreen mode Exit fullscreen mode

Choose the folder and private interface, then complete certificate pairing on the receiving device. The shipped Linux binaries disable cgo and do not require a dynamically linked C runtime.

WSL deserves a separate note: a successful Linux test inside WSL does not prove that an iPhone can reach it through Windows networking. If the files are hosted on a Windows PC, the Windows executable avoids that extra network layer. Physical Linux desktop reachability and firewall behavior still need checking on the network you use.

Android is also a browser client. User-certificate installation and browser trust vary across devices, especially on managed phones; the documented pairing requirements still apply.

If Safari cannot connect

  • Certificate warning: complete pairing on the iPhone itself and verify the fingerprint. Trust on the desktop does not transfer to the phone.
  • Page cannot be reached: check that the computer is awake, the app is running, and you selected the correct interface. Guest Wi-Fi can isolate clients even when both devices show the same network name.
  • Cross-site requests blocked: open the dashboard's separate phone URL directly in Safari, then sign in there. Use the exact HTTPS origin; do not embed the private APIs in another site or disable browser privacy protections.
  • Firewall block: review a narrowly scoped allowance for the selected interface, subnet, and port instead of switching the firewall off.

The troubleshooting guide covers these connection and download issues.

Why a small Go file server?

I wanted the host to be easy to download, inspect, and stop. The app uses Go's standard library, embeds its web assets, and has no third-party Go module dependencies.

Its narrow scope makes the controls easier to describe:

  • One selected folder: file access uses Go's os.Root plus application checks for invalid names, traversal, and linked paths. This is not a promise of isolation from administrators, hard links, or mounts.
  • Read-only operations: the receiving browser cannot upload, delete, rename, or edit files through the app.
  • Password and sessions: the generated password is stored as a salted PBKDF2-HMAC-SHA256 hash. Browser sessions use Secure, HttpOnly, SameSite=Strict cookies, with expiration and login throttling.
  • Separate management: the dashboard is loopback-only and token-protected. Its URL belongs on the host computer, not in a shared message or screenshot.
  • Direct downloads: files are streamed and support HTTP byte ranges. Browser behavior, free storage, network conditions, and filesystem limits still determine what a transfer can handle.

The server binds the selected private IPv4 interface and checks peers against its subnet. That check limits its network scope; it does not prove physical Wi-Fi membership. The app does not configure router forwarding, UPnP, firewall rules, or certificate trust automatically.

The security document spells out the trust boundaries. There is no independent security audit claimed for this alpha.

What has actually been tested?

Native CI for this release passed on seven runners: Windows x64 and ARM64, Intel and Apple Silicon macOS, Ubuntu 22.04 and 24.04 x64, and Ubuntu 24.04 ARM64.

The automated checks include verified HTTPS, unauthenticated access rejection, password sign-in, download integrity, byte ranges, cross-site API rejection, and management isolation. The public Windows and Ubuntu installer flows were also checked against the published assets.

Those checks do not replace physical phone, certificate-pairing, and real Wi-Fi tests. The release is unsigned and unnotarized. IPv6-only networks, 32-bit hosts, remote internet sharing, synchronization, and phone-to-computer uploads are outside this version's scope.

Build from source and help improve it

If you prefer to inspect and build the source, install Go 1.26 and run:

git clone https://github.com/dibyapp/pc-to-iphone-share.git
cd pc-to-iphone-share
go test ./...
go vet ./...
go build -trimpath -buildvcs=false -o pc-to-iphone-share .
./pc-to-iphone-share --help
Enter fullscreen mode Exit fullscreen mode

On Windows, use -o pc-to-iphone-share.exe and run .\pc-to-iphone-share.exe --help instead.

This project is useful when you want to browse and download one computer folder on your phone without a cloud-upload step. For broader device-to-device transfers, remote transfers, or uploads, other tools may fit better.

The source and downloads are on GitHub: PC to iPhone Share. If you try it, I would value feedback on installation, certificate pairing, and platform compatibility. Use synthetic examples in public issues and keep real filenames, addresses, passwords, and certificates private. If it solves your folder-download problem, a star helps other people discover it.

Top comments (0)