Own Your Data. Forever.
A privacy-first, self-hosted archive for your WhatsApp conversations.
WhatsApp Logger is a "Companion Device" that runs in the cloud. It connects to your WhatsApp account just like WhatsApp Web, but instead of just displaying messages, it saves them permanently to your private database.
This means even if a sender deletes a message ("This message was deleted"), you still have the original copy in your archive. It runs 24/7 in the cloud, so your phone doesn't need to be online.
What's New in v3.10.4?
App Security
Secure your local archive with a 6-digit PIN or Biometric Fingerprint unlock. Includes lockout timers for failed attempts.
Installable PWA
Install directly to your home screen. Works offline, feels native, and includes a full-screen immersive mode.
Customization
Toggle Dark Mode, change chat wallpapers, and adjust font sizes to your liking.
Secure Reset
Forgot your PIN? Reset it securely using your backend server credentials (AUTH_USER/AUTH_PASS).
Architecture: The Privacy Triangle
Understanding how your data flows is key to trusting the system. You own all three points of this triangle.
Why Self-Host?
Why go through this setup instead of downloading a "Recover Deleted Massages" app from the Play Store?
Typical Store Apps
- Spyware Risk: Often upload contacts/data to sell ads.
- Battery Drain: Must run in background 24/7 on your phone.
- Unreliable: If phone kills the app, you miss messages.
- Local Only: If you lose your phone, you lose your logs.
WhatsApp Logger
- Zero Battery Drain: Runs in the cloud, not your phone.
- 100% Private: Open source code. You own the database.
- Perfect Capture: Catches everything, even if phone is off.
- Cloud Backup: Logs survive even if you destroy your phone.
Prerequisites
You don't need coding skills, just these free accounts:
Step 1: The Vault (Firebase)
-
1Create Database
Go to Firebase Console -> Add Project "MyLogger".
Go to Build -> Firestore Database -> Create Database. Select Production Mode.
-
2Set Privacy Rules
Go to the Rules tab. Replace everything with this strict code:
rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { match /{document=**} { // 1. Allow Read: Required for the frontend to view chats allow read: if true; // 2. Allow Update: For "Rename Chat" feature only allow update: if true; // 3. Block Create/Delete: Only Backend (Render) can add/remove data allow create, delete: if false; } } } -
3Get Service Key
Click Gear Icon -> Project Settings -> Service Accounts -> Generate new private key.
Save this JSON file. Open it and copy the entire content.
Step 2: The Engine (Render)
-
1Fork & Deploy
Go to the GitHub Repo and click Fork.
Go to Render -> New Web Service -> Select your forked repo.
-
2Environment Variables
Scroll down to Environment Variables and add these three:
FIREBASE_SERVICE_ACCOUNT Paste the full JSON content from Step 1.AUTH_USER Set a username (e.g., admin).AUTH_PASS Set a password. Used for login & PIN resets.Click Create Web Service.
Step 3: Link Device
Once Render says "Live", open your Render URL (e.g., https://myapp.onrender.com).
- 1. Login with your
AUTH_USERandAUTH_PASS. - 2. You will see a QR Code.
- 3. Open WhatsApp on phone -> Linked Devices -> Link a Device.
- 4. Scan the QR code. Refresh page to confirm "System Operational".
Step 4: Frontend Setup
This is the actual App interface. You need to configure it before hosting.
index.html, Scroll to the bottom and fill in:
RENDER_BACKEND_URL: Your Render URL (no trailing slash).firebaseConfig: Get this from Firebase Console -> Project Settings -> General -> Your Apps.
Choose Hosting Method
Zero cost, zero setup.
- 1. Create a public GitHub repo named
my-logger-ui. - 2. Upload your configured
index.html,icon.svg, andmanifest.json. - 3. Go to Repo Settings -> Pages sidebar.
- 4. Set Branch to
mainand save. - 5. Your app is live at
username.github.io/my-logger-ui.
Drag and drop simplicity.
- 1. Put
index.html,icon.svg, andmanifest.jsonin a folder. - 2. Go to Netlify Drop
- 3. Drag the folder onto the page.
- 4. Done. You get a secure link instantly.
Professional choice. Recommended for custom domains.
This method requires using the command line but offers the most professional results with free SSL for custom domains.
Phase 1: Installation & Init
# 1. Install Firebase Tools (requires Node.js)
npm install -g firebase-tools
# 2. Login to Google
firebase login
# 3. Initialize Project
firebase init hosting
# -> Select "Use an existing project"
# -> Select your "MyLogger" project
# -> Type "public" for public directory
# -> Type "y" (yes) for single-page app
# -> Type "n" (no) for automatic builds
Phase 2: Deployment
Move your configured files (index.html, icon.svg, manifest.json) into the newly created public folder.
firebase deploy
Phase 3: Custom Domain (Detailed)
- 1. Purchase Domain: Go to a registrar like Namecheap or GoDaddy and buy your domain (e.g.,
mylogger.com). - 2. Start Setup: Go to Firebase Console -> Hosting -> Add Custom Domain and enter your domain.
- 3. Verify Ownership: Firebase will show a value for a TXT Record. Copy this value.
- 4. Update DNS: Log in to your Domain Registrar, find "DNS Management" or "Advanced DNS".
- Add a new record: Type TXT.
- Host:@(or blank).
- Value: Paste the code from Firebase.
- Save and wait 5 minutes. - 5. Point to Firebase: Once verified, Firebase provides A Records (IP addresses).
- Delete any existing A records in your registrar.
- Add the new A records from Firebase (usually two IP addresses). - 6. Finish: Wait up to 24 hours (usually 1 hour) for the SSL certificate to generate. Your site is now secure at your custom domain.
User Guide: App Security
The frontend includes advanced security features to protect your local device from prying eyes. These features run entirely on your device (Local Storage).
1. Setting up 6-Digit PIN
- 1. Open the App and click the Settings Gear settings in the sidebar.
- 2. Find the App Security section.
- 3. Toggle PIN Lock.
- 4. Enter a 6-digit PIN when prompted. Confirm it by entering it again.
- 5. Done! Now every time you open the app, it will require this PIN.
2. Enabling Biometrics
- 1. Ensure your device has a fingerprint or face scanner set up.
- 2. In App Settings, Toggle Fingerprint Lock.
- 3. Your browser/OS will prompt you to verify your identity.
- 4. Once verified, the app will prioritize Biometrics on the lock screen.
3. Emergency Reset (Forgot PIN?)
If you forget your local PIN, you can reset it using your server credentials.
Step 1
On the Lock Screen, click "Forgot PIN / Use Password" at the bottom.
Step 2
Enter your AUTH_USER and AUTH_PASS (the same ones you set in Render).
This will wipe the local security settings and let you in. It does not delete your chats.
User Guide: Features & Tips
Global vs. Chat Search
- Sidebar Search: Filters your contact list. Use this to find a specific person or group name.
- In-Chat Search: Inside a chat, click the Menu (⋮) -> Search in Chat. This highlights specific words within that conversation history.
Using the Calendar
Looking for messages from a specific day?
- 1. Open a Chat.
- 2. Click Menu (⋮) -> Search by Date.
- 3. Select a date on the calendar.
- 4. The chat will jump to the first message of that day and flash yellow.
Renaming Contacts
Since the logger saves contacts by phone number, you might want to give them real names.
Download Chat Logs
You can export any conversation to a simple text file. Click Menu (⋮) -> Download. It generates a .txt file formatted with timestamps and sender names.
Step 5: Keep it Alive
Use a free pinger service to wake it up.
- 1. Go to UptimeRobot.
- 2. Add Monitor -> Type HTTP(s).
- 3. URL:
Your-Render-URL/ping. - 4. Interval: 5 minutes.
Troubleshooting
"No chats found"
The logger only records messages sent after you link it. Send a message to yourself to test.
"Auth Error" in App
Check that RENDER_BACKEND_URL in index.html matches your Render URL exactly (https://...).
QR Code not loading
Your Render server might be sleeping. Wait 30 seconds for it to wake up, or check Render logs.
Permission Denied
Check your Firebase Rules (Step 1). Ensure allow create is false but allow update is true.
Frequency Asked Questions
Is this really free? expand_more
Is my data safe? expand_more
Does the developer see my chats? expand_more
Is this legal? expand_more
Does it save photos/videos? expand_more
Does it save View Once messages? expand_more
Does it save WhatsApp Status? expand_more
Can I reply from the dashboard? expand_more
Does it work with Group Chats? expand_more
Can I export my chats? expand_more
What is Render? expand_more
What is Firebase? expand_more
Do I need my phone on 24/7? expand_more
What if Render sleeps? expand_more
How do I update the logger? expand_more
Can I host this on a Raspberry Pi? expand_more
npm install && npm start. You still need Firebase for the database.How much storage do I have? expand_more
Why is the QR code not loading? expand_more
Why does it say "No chats found"? expand_more
I forgot my App PIN/Password expand_more
AUTH_USER and AUTH_PASS) you set in Render.Community & Support
This project is open-source and relies on the community to stay safe and effective.
Code of Conduct
We pledge to make participation a harassment-free experience for everyone. Abusive behavior will not be tolerated.
Security Policy
Strict No-Logging Policy: Never submit code that logs message content to the console. If you find a vulnerability, do NOT open a public issue.