wa.me/+966... but easier.
A minimal, fast, self-hosted WhatsApp link opener. Enter a phone number and jump straight into a WhatsApp chat — no contacts, no country-code fiddling. Built as an installable PWA with a dark, mobile-first UI.
- One-tap chat — Type a number, hit Chat, WhatsApp opens instantly
- Auto country-code normalization — Local Saudi numbers (
05…/5…) are automatically converted to international format (9665…); full international numbers work as-is - Installable PWA — Add to home screen, works offline, launches standalone
- Dark, mobile-first design — Built with the Cairo font, optimised for phones
- Zero dependencies — No npm, no build step, no frameworks
- Self-hosted — Runs on any PHP-capable server
| Layer | Technology |
|---|---|
| Frontend | Vanilla HTML, CSS, JavaScript (ES6+) |
| Backend | PHP (single-file SPA router) |
| PWA | Service Worker (cache-first), Web App Manifest |
| Fonts | Google Fonts — Cairo |
| Icons | Standard PWA icon set (192px / 512px) |
- A web server with PHP ≥ 7.4 (Apache, Nginx, or
php -S)
-
Clone the repo
git clone https://github.com/Fahad-BA/EasyWa.git cd EasyWa -
Serve with PHP's built-in server (quickest)
php -S localhost:8000 router.php
Then visit
http://localhost:8000. -
Or deploy to your existing server
Copy all files to your web root. For Apache, a basic
.htaccessthat routes throughrouter.phpis sufficient:RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^ router.php [L]
For Nginx, point
try_filestorouter.php.
-
Open EasyWa in your browser (or launch from your home screen if installed).
-
Type a phone number — any format works:
Input Normalized to 05512345679665512345675512345679665512345679665512345679665512345671415555267114155552671 -
Press Chat — WhatsApp opens with that conversation ready.
Tip: Install it as a PWA (Add to Home Screen) for a native-app-like experience.
EasyWa/
├── index.html # Main UI (inline CSS + JS for instant load)
├── app.js # Standalone JS version (normalization + redirect logic)
├── style.css # Standalone CSS version
├── router.php # SPA router — serves static files or falls back to index.html
├── service-worker.js # PWA offline support (cache-first strategy)
├── manifest.json # Web App Manifest (installable, standalone display)
├── icons/ # PWA icons (192px, 512px, favicon set)
└── README.md
- Phone normalization — Strips all non-digits, detects Saudi local prefixes (
05,5) and prepends966 - WhatsApp deep link — Redirects to
https://wa.me/<normalized_number> - PWA caching — Service Worker uses a cache-first strategy for all same-origin assets; external requests (like
wa.me) always pass through to the network
Released under the MIT License. See LICENSE for details.
Made with ❤️ by Fahad-BA