Porter is a browser extension that saves your profile information locally and lets you autofill job application forms with a single click.
porter.mp4
Job applications often require you to repeatedly fill out the same information. Porter solves this by letting you store your details once and autofill them across different forms. It focuses on the most common fields required in tech applications, such as GitHub, LinkedIn, Portfolio, Resume, Name, Email, Phone, and Location.
- Store profile information locally
- One-click autofill
- Works on common application forms
- Supports custom profile fields
- Built with TypeScript
- No external servers
Install from a GitHub Release:
- Download the latest release ZIP from the Releases page.
- Extract the downloaded ZIP file.
- Open
chrome://extensionsin your browser. - Enable Developer Mode in the top right corner.
- Click Load unpacked.
- Select the extracted extension folder.
Build the extension from source:
git clone https://github.com/M-SaaD-H/porter
cd porter
bun install
bun run buildAfter building, follow steps 3-6 from Option 1, selecting the generated dist folder to load the unpacked extension.
- Open the Porter extension popup.
- Save your profile information, including any custom fields.
- Visit a supported application form.
- Click Fill Application in the extension popup.
- Porter will automatically fill the matching fields on the page.
- Local Storage: Stores data securely in
chrome.storage.local. - Field Detection: Detects visible form inputs on the page.
- Label Extraction: Extracts labels associated with the form inputs.
- Keyword Matching: Matches labels to your profile data using a predefined keyword mapping.
- Autofill: Fills the matching values into the inputs.
- Framework Compatibility: Dispatches standard
inputandchangeevents to ensure compatibility with modern frontend frameworks (React, Vue, etc.).
By default, Porter supports the following built-in fields:
- Name
- Phone
- Location
- GitHub
- Portfolio
- Twitter / X
- Resume URL
You can also add custom fields in the extension popup to support additional form inputs.
porter/
├── dist/ # Compiled extension output
├── public/ # Static assets (icons, etc.)
├── src/ # Source code
│ ├── popup/ # Extension popup UI
│ ├── classifier.ts # Keyword mapping and field classification
│ ├── content.ts # Content script entry point
│ ├── filler.ts # DOM manipulation and event dispatching
│ ├── scanner.ts # Form input detection
│ ├── storage.ts # Chrome storage management
│ └── types.ts # TypeScript type definitions
├── package.json
└── vite.config.ts # Build configuration
- Data never leaves your browser.
- No external APIs or third-party tracking.
- No analytics are collected.
- No user account is required.
- Everything is stored locally using
chrome.storage.local.
To start developing Porter:
-
Install dependencies:
bun install
-
Start the development server (watches for changes):
bun run dev
-
Build the production extension:
bun run build
- Multiple profiles
- Export/import profile
- Firefox support
- Chrome Web Store release
- Better field detection
Contributions are welcome!
Please feel free to submit a Pull Request or open an issue for any bugs or feature requests.
This project is licensed under the MIT License.