Rescue your Mealime data

Mealime has no export button, favourites and plans do not move to its replacement, and all personal data is deleted when it shuts down. Your account is still yours today: the Mealime web app loads it as one JSON document, and you can save that document in about a minute.

Counting down to October 21, 2026…

How it stays private. The snippet runs on the Mealime page in your browser. It never sends your password or session token anywhere; it removes the token fields before saving the file. Suppercharge only receives a file if you choose to upload it in step 3. The full snippet is shown below and served at /rescue.js.

Step 1: open Mealime and sign in

On a computer, open my.mealime.com and sign in with your Mealime account. The phone apps cannot run the snippet, but a phone browser can.

Step 2: run the rescue snippet on that page

Pick whichever is easier. Both do the same thing and download a file named mealime-export-<date>.json to your computer.

Option A: bookmarklet

Drag this button to your bookmarks bar. Then, on the Mealime page, click the bookmark.

Rescue Mealime data

Option B: paste into the console

  1. On the Mealime page press F12 (Windows) or Option+Cmd+J (Mac) to open the developer console.
  2. Paste the snippet and press Enter. If the browser asks you to type "allow pasting", do that first.
Read the snippet (this is everything it does)
(async () => {
  try {
    if (location.hostname !== 'my.mealime.com') {
      alert('Open https://my.mealime.com, sign in, then run this again.');
      return;
    }
    const token = localStorage.getItem('mealimeAuthToken');
    if (!token) {
      alert('You are not signed in. Sign in at my.mealime.com, then run this again.');
      return;
    }
    const call = async (name) => {
      const res = await fetch('https://api.mealime.com/api/v2/' + name, {
        method: 'POST',
        headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', 'Authorization': 'Token token=' + token },
        body: JSON.stringify({ source: 'my-web', client_id: 'rescue' })
      });
      if (!res.ok) throw new Error('Mealime answered ' + res.status + ' for ' + name);
      return res.json();
    };
    const user = await call('get_user');
    if (!user || !user.id) throw new Error('Mealime returned an empty account. Sign out, sign in again, and retry.');
    const grocery = await call('get_full_grocery_list_items');
    ['auth_token', 'share_token'].forEach((k) => { delete user[k]; });
    const out = {
      format: 'suppercharge-mealime-export',
      version: 1,
      exported_at: new Date().toISOString(),
      user: user,
      grocery_list_items: (grocery && grocery.grocery_list_items) || []
    };
    const name = 'mealime-export-' + new Date().toISOString().slice(0, 10) + '.json';
    const blob = new Blob([JSON.stringify(out, null, 2)], { type: 'application/json' });
    const a = document.createElement('a');
    a.href = URL.createObjectURL(blob);
    a.download = name;
    document.body.appendChild(a);
    a.click();
    a.remove();
    const plans = 1 + ((user.history && user.history.length) || 0);
    alert('Saved ' + name + ' (' + plans + ' meal plan(s), ' + ((user.favourites && user.favourites.length) || 0) + ' favourites). Keep this file safe.');
  } catch (e) {
    alert('Could not export: ' + (e && e.message ? e.message : e));
  }
})();

Step 3 (optional): upload the file so we can import it at launch

Keep the downloaded file either way. If you upload it, it is stored encrypted, tied to your waitlist record, used only to import your preferences, favourites, notes, ratings, plans and custom recipes into your Suppercharge account, and deleted on request or 12 months after launch if unused.

Not on the waitlist yet? Join first; the token is filled in automatically afterwards.

If the snippet cannot run for you

  • Screenshot your Favorites tab and your current meal plan in the app; keep the images. You will be able to upload them for matching after launch.
  • For recipes you imported into Mealime from the web, save the original web addresses; they import cleanly.
  • Your eating preferences are already captured by the waitlist form, so the beta starts configured for you.