Own Your Data. Forever.

A privacy-first, self-hosted archive for your WhatsApp conversations.

verified v3.10.4 Secure Update lock End-to-End Encrypted money_off 100% Free

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?

fingerprint

App Security

Secure your local archive with a 6-digit PIN or Biometric Fingerprint unlock. Includes lockout timers for failed attempts.

install_mobile

Installable PWA

Install directly to your home screen. Works offline, feels native, and includes a full-screen immersive mode.

palette

Customization

Toggle Dark Mode, change chat wallpapers, and adjust font sizes to your liking.

lock_reset

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.

cloud_upload
1. The Source (WhatsApp): Messages are encrypted and sent to your Render Server via the official Linked Device protocol.
dns
2. The Processor (Render): Your private server processes the message and immediately pushes it to your database. It does not log or save anything itself.
database
3. The Vault (Firebase): Your personal Google database stores the logs. Only you hold the API keys to read this data.

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:

GitHub Account Google Account Render.com Account UptimeRobot Account

Step 1: The Vault (Firebase)

  • 1
    Create Database

    Go to Firebase Console -> Add Project "MyLogger".

    Go to Build -> Firestore Database -> Create Database. Select Production Mode.

  • 2
    Set 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;
        }
      }
    }
  • 3
    Get 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)

  • 1
    Fork & Deploy

    Go to the GitHub Repo and click Fork.

    Go to Render -> New Web Service -> Select your forked repo.

  • 2
    Environment 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 4: Frontend Setup

This is the actual App interface. You need to configure it before hosting.

edit
Config Required: Open the provided 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. 1. Create a public GitHub repo named my-logger-ui.
  2. 2. Upload your configured index.html, icon.svg, and manifest.json.
  3. 3. Go to Repo Settings -> Pages sidebar.
  4. 4. Set Branch to main and save.
  5. 5. Your app is live at username.github.io/my-logger-ui.

Drag and drop simplicity.

  1. 1. Put index.html, icon.svg, and manifest.json in a folder.
  2. 2. Go to Netlify Drop
  3. 3. Drag the folder onto the page.
  4. 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. 1. Purchase Domain: Go to a registrar like Namecheap or GoDaddy and buy your domain (e.g., mylogger.com).
  2. 2. Start Setup: Go to Firebase Console -> Hosting -> Add Custom Domain and enter your domain.
  3. 3. Verify Ownership: Firebase will show a value for a TXT Record. Copy this value.
  4. 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. 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. 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).

phonelink_lock
PWA Requirement: For Biometric Authentication (Fingerprint/FaceID) to work, you usually need to install the app as a PWA (Add to Home Screen) and serve it over HTTPS.

1. Setting up 6-Digit PIN

  1. 1. Open the App and click the Settings Gear settings in the sidebar.
  2. 2. Find the App Security section.
  3. 3. Toggle PIN Lock.
  4. 4. Enter a 6-digit PIN when prompted. Confirm it by entering it again.
  5. 5. Done! Now every time you open the app, it will require this PIN.

2. Enabling Biometrics

  1. 1. Ensure your device has a fingerprint or face scanner set up.
  2. 2. In App Settings, Toggle Fingerprint Lock.
  3. 3. Your browser/OS will prompt you to verify your identity.
  4. 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. 1. Open a Chat.
  2. 2. Click Menu (⋮) -> Search by Date.
  3. 3. Select a date on the calendar.
  4. 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.

Click Menu (⋮) -> Rename. This alias is saved to your Firebase database, so it syncs across all your devices.

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

warning
Crucial Step: Render puts free servers to sleep after 15 mins of inactivity. If it sleeps, you miss messages.

Use a free pinger service to wake it up.

  1. 1. Go to UptimeRobot.
  2. 2. Add Monitor -> Type HTTP(s).
  3. 3. URL: Your-Render-URL/ping.
  4. 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

General
Is this really free? expand_more
Yes. Render, Firebase, and UptimeRobot all have generous free tiers that are sufficient for personal use. You will typically never pay anything.
Is my data safe? expand_more
Absolutely. The entire system is self-hosted. You own the database (Firebase) and the server (Render). The developers of this tool have zero access to your data.
Does the developer see my chats? expand_more
No. The code connects directly from your Render server to your Firebase database using your personal API keys. There is no middleman server.
Is this legal? expand_more
The tool uses standard WhatsApp Web protocols to function as a linked device. It is intended for personal archiving of your own conversations.
Features & Limitations
Does it save photos/videos? expand_more
No. To keep the project free (Firebase offers limited storage), the logger only saves text content. Media files would fill up your free tier storage very quickly.
Does it save View Once messages? expand_more
No. WhatsApp does not send the content of "View Once" media to linked devices/web clients, so the logger cannot see them.
Does it save WhatsApp Status? expand_more
No, it cannot save WhatsApp statuses at this time. If you would like to add this feature to this project, please submit a pull request by uploading the updated code to Github.
Can I reply from the dashboard? expand_more
No. This tool is designed strictly as a read-only archive to ensure maximum safety and simplicity.
Does it work with Group Chats? expand_more
Yes! It automatically archives messages from any group you are part of, including messages sent by other participants.
Can I export my chats? expand_more
Yes. Inside any chat on the dashboard, open the menu (three dots) and select "Download" to get a .txt file of the conversation.
Technical Setup
What is Render? expand_more
Render is a cloud hosting platform. It provides the computer (server) that runs your logger 24/7 so your phone doesn't have to.
What is Firebase? expand_more
Firebase is Google's database service. While Render processes the messages, Firebase acts as the permanent hard drive where logs are stored.
Do I need my phone on 24/7? expand_more
No. Once you scan the QR code, the logger works independently via WhatsApp's Multi-Device feature. Your phone can be off for up to 14 days.
What if Render sleeps? expand_more
If the server sleeps, you will miss messages sent during that time. This is why setting up UptimeRobot (Step 5) is critical—it keeps the server awake.
How do I update the logger? expand_more
In your Render dashboard, go to your service and click "Manual Deploy" -> "Deploy latest commit" to pull the newest code from GitHub.
Can I host this on a Raspberry Pi? expand_more
Yes. The backend is standard Node.js. You can clone the repo and run npm install && npm start. You still need Firebase for the database.
How much storage do I have? expand_more
The Firebase Free Tier (Spark Plan) gives you 1 GiB of storage. Since we only store text, this is enough for millions of messages.
Troubleshooting
Why is the QR code not loading? expand_more
Your Render server might be starting up or deploying. Wait 30 seconds and refresh the page. Check Render logs if the issue persists.
Why does it say "No chats found"? expand_more
The logger starts empty. It only records messages that arrive *after* you have linked it. Send a message to your phone to see it appear.
I forgot my App PIN/Password expand_more
On the lock screen, click "Forgot PIN". You can reset your local security using the server credentials (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.

gavel

Code of Conduct

We pledge to make participation a harassment-free experience for everyone. Abusive behavior will not be tolerated.

bug_report

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.

Contact Channels

security
Security & Fast Fixes For vulnerabilities or urgent issues. amitdutta4255@gmail.com
mail
General Inquiries For questions, conduct reports, or non-urgent bugs. mail@amit.is-a.dev