<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>makeprivacy.org guides</title><subtitle>Free guides and tools for running a business, and a life, with less reliance on Big Data platforms: your own email, records, backups and money, in accounts you own.</subtitle><link href="https://makeprivacy.org/feed.xml" rel="self"/><link href="https://makeprivacy.org/guides/"/><id>https://makeprivacy.org/feed.xml</id><updated>2026-10-14T00:00:00Z</updated><author><name>makeprivacy.org</name></author><entry><title>One email address for every account</title><link href="https://makeprivacy.org/guides/one-email-address-per-account/"/><id>https://makeprivacy.org/guides/one-email-address-per-account/</id><published>2026-10-14T00:00:00Z</published><updated>2026-10-14T00:00:00Z</updated><summary>When every shop, bank and newsletter has the same address, one leak reaches all of them, and you can&#x27;t tell who sold it. A separate address for each account fixes both.</summary><content type="html">&lt;p&gt;Most people use one email address for everything. It works until that address leaks, is sold or is
scraped from a website. Then spam and phishing arrive at the same inbox your bank writes to, and there is
no way to tell which company let it out.&lt;/p&gt;

&lt;h2&gt;What happened to us&lt;/h2&gt;
&lt;p&gt;We printed a contact address on our own website, in the footer, on the contact page and in the privacy
notice. Within weeks it was getting spam. Removing it from the visible pages wasn&#x27;t enough: the address
also sat in the files machines read, such as the site summary written for AI tools and the structured data
search engines collect. We took it out of all of them and pointed visitors to a contact form and an
encrypted messenger instead.&lt;/p&gt;
&lt;p&gt;The address that leaked is still on spam lists, and it will stay there. Removing it stops new
harvesting; it doesn&#x27;t recall the copies already made. That is the case for separate addresses: you want
the thing that leaks to be something you can switch off without anyone else noticing.&lt;/p&gt;

&lt;h2&gt;How a per-account address works&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;Each service you sign up for gets its own address, for example one for the library and one for
  the postal service. All of them deliver to your normal inbox.&lt;/li&gt;
  &lt;li&gt;Each address carries a label saying what it is for, so mail to it always tells you who is writing.&lt;/li&gt;
  &lt;li&gt;When one starts getting spam, you switch that address off. Mail to it is accepted and quietly
  dropped, so the sender learns nothing, and every other address keeps working.&lt;/li&gt;
  &lt;li&gt;If a service you never gave the address to writes to it, you know exactly who shared it.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Three ways to set it up&lt;/h2&gt;
&lt;div class=&quot;table-wrap&quot;&gt;&lt;table&gt;
  &lt;thead&gt;&lt;tr&gt;&lt;th&gt;Route&lt;/th&gt;&lt;th&gt;Effort&lt;/th&gt;&lt;th&gt;Good to know&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;&lt;td&gt;Your mail provider&#x27;s built-in masked or alias addresses&lt;/td&gt;&lt;td&gt;Minutes&lt;/td&gt;
      &lt;td&gt;Easiest. The addresses live with that provider, so moving provider later means moving them too.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;An alias service such as SimpleLogin or addy.io&lt;/td&gt;&lt;td&gt;An hour&lt;/td&gt;
      &lt;td&gt;Works with any inbox and handles replies from the alias. Both are open source and can also be self-hosted.&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;Your own domain on a mail server you run&lt;/td&gt;&lt;td&gt;A project&lt;/td&gt;
      &lt;td&gt;Full control and no extra company in the path. You also take on spam filtering, backups and
      the reputation of your sending server.&lt;/td&gt;&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;We started with an alias service and later moved our own mail to a server we run, where each address
is a labelled alias with an on/off switch. The idea is the same in all three; pick the one you will
actually keep up.&lt;/p&gt;

&lt;h2&gt;Habits that make it work&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Use your own domain if you can.&lt;/strong&gt; Addresses on a domain you own can move to any
  provider; addresses on someone else&#x27;s domain can&#x27;t.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Switch off, don&#x27;t delete.&lt;/strong&gt; A switched-off address keeps refusing quietly. A deleted
  one may fall through to a catch-all and start arriving again.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Keep one stable address for account recovery&lt;/strong&gt; on the accounts that matter most,
  and never publish it.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Don&#x27;t print any address on a website.&lt;/strong&gt; Use a contact form with spam protection, or a
  messenger link.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;What it doesn&#x27;t do&lt;/h2&gt;
&lt;p&gt;Separate addresses stop one leak spreading and show you who leaked. They don&#x27;t hide what&#x27;s in your mail
from your mail provider, and every alias on your own domain still points back to you. For that you need to
choose the provider carefully, which is a separate decision.&lt;/p&gt;</content></entry><entry><title>Find every subscription without handing over your bank login</title><link href="https://makeprivacy.org/guides/find-subscriptions-without-a-bank-login/"/><id>https://makeprivacy.org/guides/find-subscriptions-without-a-bank-login/</id><published>2026-10-14T00:00:00Z</published><updated>2026-10-14T00:00:00Z</updated><summary>Subscription-tracker apps want you to connect your bank through a data aggregator. You can get the same list from statements you already have, without anyone else seeing your transactions.</summary><content type="html">&lt;p&gt;Subscription trackers are useful: they find the streaming service you forgot and the free trial that
quietly became a paid plan. Most of them get there by asking you to log in to your bank through a data
aggregator. From then on a third company receives every transaction you make, not only the subscriptions,
and keeps it under its own terms.&lt;/p&gt;

&lt;h2&gt;The same result from records you already hold&lt;/h2&gt;
&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;Collect.&lt;/strong&gt; Download the last 6 to 12 months of statements for every card and account,
  personal and business. Add the card alert and receipt emails already in your inbox.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Match.&lt;/strong&gt; Group charges by merchant. Anything that repeats at a regular interval
  (weekly, monthly, yearly) with a similar amount is a subscription candidate.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Decide.&lt;/strong&gt; For each one: keep, cancel, downgrade, or move to annual billing. Look for
  the same service paid twice, on two cards or by two people.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Keep watching.&lt;/strong&gt; Repeat the match each quarter, or have card alerts land in one place
  so a new repeat charge stands out as soon as it starts.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Our &lt;a href=&quot;/tools/subscriptions/&quot;&gt;subscription finder&lt;/a&gt; does the matching step in your browser:
paste statement lines and it lists the repeat charges. Nothing is uploaded.&lt;/p&gt;

&lt;h2&gt;What our own review found&lt;/h2&gt;
&lt;p&gt;Our founder&#x27;s own review used 9 statements from 6 banks, plus email receipts. It found more
than 20 recurring charges and flagged up to about US$415 a year to cut, including 5 possible duplicates.
It also turned up US$1,161.72 of company fees paid on a personal card, which could be claimed back. None of
it needed a bank login shared with anyone.&lt;/p&gt;

&lt;h2&gt;Tips&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;Yearly charges hide well. Use at least 12 months of statements, or search your inbox for &quot;renewal&quot;
  and &quot;annual&quot;.&lt;/li&gt;
  &lt;li&gt;Charges in a foreign currency often show a slightly different amount each month. Group by merchant
  first, then look at the amounts.&lt;/li&gt;
  &lt;li&gt;Give each service its own email address (see &lt;a href=&quot;/guides/one-email-address-per-account/&quot;&gt;one
  address for every account&lt;/a&gt;). Every renewal notice then tells you exactly who is charging you.&lt;/li&gt;
  &lt;li&gt;Cancel in the service&#x27;s own account settings and keep the confirmation email. Then check the next
  statement.&lt;/li&gt;
&lt;/ul&gt;</content></entry><entry><title>Backups you have actually restored</title><link href="https://makeprivacy.org/guides/backups-you-have-restored/"/><id>https://makeprivacy.org/guides/backups-you-have-restored/</id><published>2026-10-14T00:00:00Z</published><updated>2026-10-14T00:00:00Z</updated><summary>A backup you have never restored is a hope, not a backup. Here is the setup we run for our own companies, and the drill that proves it works.</summary><content type="html">&lt;p&gt;Most backup failures are discovered on the day you need the backup: the job stopped months ago, the
password is lost, or the copy turns out to be incomplete. All three are cheap to catch in advance.&lt;/p&gt;

&lt;h2&gt;Three copies, in three places&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;A drive at home or in the office&lt;/strong&gt;, for fast restores.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;A second computer&lt;/strong&gt;, so one broken machine or drive never takes everything with it.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Rented storage in another country&lt;/strong&gt;, for fire, flood and theft.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Every copy is encrypted on your own machine before it leaves, so the storage company holds data it
can&#x27;t read. We use restic, which is free and open source; it encrypts, removes duplicate data and keeps
dated snapshots you can go back to. Keep the encryption password in your password manager and on paper:
without it the backups are useless, to a thief and to you.&lt;/p&gt;

&lt;h2&gt;Make the off-site copy add-only&lt;/h2&gt;
&lt;p&gt;If a machine is compromised, an attacker who can reach your backups can delete them too. Set the
off-site copy up so the machines that send backups can add new snapshots but cannot delete or overwrite
old ones. Clearing out old snapshots then becomes a deliberate, manual step.&lt;/p&gt;

&lt;h2&gt;The restore drill&lt;/h2&gt;
&lt;p&gt;Once a month, restore something real and compare it with the original:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Pick some files at random, restore them, and check they match byte for byte.&lt;/li&gt;
  &lt;li&gt;For a database, restore it somewhere separate and count the rows. Our last records drill brought
  back 9,484 of 9,484 rows.&lt;/li&gt;
  &lt;li&gt;For a whole system, such as a mail server, start a throwaway copy from the backup and check that it
  works. When we did this for our own mail server, the restored copy had every account and a test message
  we had planted beforehand.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Write down the steps the first time. The day you need them is not the day to work them out.&lt;/p&gt;

&lt;h2&gt;Let silence be the alarm&lt;/h2&gt;
&lt;p&gt;Each backup job should report when it succeeds, and a daily check should raise an alarm when a report
is missing or old. Don&#x27;t wait for an error message: a job that has stopped running sends none.&lt;/p&gt;</content></entry><entry><title>Leaving Airtable for a database you run</title><link href="https://makeprivacy.org/guides/leaving-airtable/"/><id>https://makeprivacy.org/guides/leaving-airtable/</id><published>2026-10-14T00:00:00Z</published><updated>2026-10-14T00:00:00Z</updated><summary>We moved our own records from Airtable to Baserow, an open-source database with a similar spreadsheet-style interface, on a small server we rent. What it took, and two traps worth knowing.</summary><content type="html">&lt;p&gt;Airtable is a good product. The concern is where the records live: in someone else&#x27;s platform, under
terms that can change, with an export that loses part of what makes the base work, such as formulas and
links. For records a business depends on, we wanted a copy we run ourselves and can take anywhere.&lt;/p&gt;

&lt;h2&gt;What we use instead&lt;/h2&gt;
&lt;p&gt;Baserow is open source and looks and works much like Airtable: tables, views, links between records,
formulas and forms. We run it on a small rented cloud server, about US$7 a month, with its data in a
PostgreSQL database on the same server. It is reachable only through a sign-in gate in front of it, and the
database is backed up every night.&lt;/p&gt;

&lt;h2&gt;How we moved&lt;/h2&gt;
&lt;ol&gt;
  &lt;li&gt;Export each base from Airtable through its API, including attachments.&lt;/li&gt;
  &lt;li&gt;Load it into a test workspace first, never straight into the real one.&lt;/li&gt;
  &lt;li&gt;Rebuild formulas. Most convert directly; some need rewriting by hand.&lt;/li&gt;
  &lt;li&gt;Compare every value, field by field, between Airtable and the new copy. For our first two bases
  that was 2,245 and 8,131 values, with 0 differences.&lt;/li&gt;
  &lt;li&gt;Only then switch the people and the automations over, and stop editing the old base.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;Two traps we hit&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Number precision.&lt;/strong&gt; In Airtable, a number field&#x27;s display precision doesn&#x27;t limit what it
stores. In the new database it does. One field set to whole numbers held a 22.5, and that single value got
a whole batch of 200 rows rejected. Exchange rates with 7 decimal places would have been cut to 6. The fix
was to size each field&#x27;s decimal places from the data actually in it, never from the display setting.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Date differences.&lt;/strong&gt; A formula counting whole years between two dates gave a different
answer after the move, because the new database rounds where Airtable counts whole years. A company 8.87
years old came out as 9, which pushed a renewal date out by a year. We rebuilt the formula from calendar
years, months and days so it counts the way people do.&lt;/p&gt;
&lt;p&gt;Neither would have been noticed without the value-by-value comparison. That step is the migration;
the rest is copying.&lt;/p&gt;

&lt;h2&gt;After the move&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;A nightly backup of the database and the attached files, with a restore test before relying on it.&lt;/li&gt;
  &lt;li&gt;Keep the old Airtable base read-only for a while, as a reference, then close it.&lt;/li&gt;
  &lt;li&gt;Programs that wrote to Airtable get their own narrow access tokens on the new database, one per
  program, so any one can be switched off on its own.&lt;/li&gt;
&lt;/ul&gt;</content></entry><entry><title>Clean up your address book without Google or iCloud</title><link href="https://makeprivacy.org/guides/clean-up-your-address-book/"/><id>https://makeprivacy.org/guides/clean-up-your-address-book/</id><published>2026-10-14T00:00:00Z</published><updated>2026-10-14T00:00:00Z</updated><summary>Our founder&#x27;s address book went from 675 cards to 207 real contacts, synced to an iPhone and an Android phone with neither Google nor iCloud in the middle. The steps, and the one mistake that deleted 431 people.</summary><content type="html">&lt;p&gt;Address books rot quietly. Every mail app saves the addresses you write to, every phone adds its own
copies, and an old Google export brings the same people back under slightly different names. Ours had 675
cards. After cleaning it held 207 contacts, and they now sync between an iPhone and an Android phone through
a standard contacts server (CardDAV) at our email provider, without Google or iCloud.&lt;/p&gt;

&lt;h2&gt;1. Back up first, and at every stage&lt;/h2&gt;
&lt;p&gt;Export everything before you change anything, and again after each step. On an iPhone you need no app
for this: Contacts → Lists → press and hold the list → Export. Keep each export with a date in its name.
You will need one of them; we did.&lt;/p&gt;

&lt;h2&gt;2. Gather every source into one place&lt;/h2&gt;
&lt;p&gt;Bring in the old exports and the contacts that only live on a phone. Most will already be there: of 159
contacts from an old Google export, 151 matched cards we had, and 110 of 113 phone-only contacts did too.
The rest are the ones worth adding.&lt;/p&gt;

&lt;h2&gt;3. Remove junk by what&#x27;s on the card, never by group&lt;/h2&gt;
&lt;p&gt;An automatically saved address looks the same every time: no name (or the name is just the email
address), no phone number and no organisation. 100 of our cards were like that, and those are safe to remove.
A card with a phone number or a company name was saved by a person, even if it has no name.&lt;/p&gt;
&lt;p&gt;Here is the mistake. Our mail provider keeps an &quot;Autosaved&quot; group, and it looked like the junk list. It
isn&#x27;t: it holds every address ever captured, including people later given phone numbers and job titles.
Deleting its members took the address book from 519 cards to 84. Everything came back from the backup, but
it took two passes, because 22 cards reported success on the first pass without actually being saved. Check
what is inside a group, a label or a folder, and count it, before you delete by it.&lt;/p&gt;

&lt;h2&gt;4. Merge duplicates, with a guard&lt;/h2&gt;
&lt;p&gt;Cards that share an email address or a phone number are usually the same person. Merge them onto the
fullest card and keep every email and phone from the others; that took our duplicate groups from 48 to 3.
The guard: a shared address such as info@ or office@ links different people. When the names on a shared
email or phone don&#x27;t agree, a person decides, not the tool.&lt;/p&gt;

&lt;h2&gt;5. Curate by hand&lt;/h2&gt;
&lt;p&gt;No tool knows whom you&#x27;ll call again. We went through the remainder by hand and removed 312 contacts
that had only an email address and that nobody needed.&lt;/p&gt;

&lt;h2&gt;6. Connect the devices, in the right order&lt;/h2&gt;
&lt;p&gt;Clear a phone&#x27;s own contacts &lt;em&gt;before&lt;/em&gt; you add the sync account, never after. Once the account is
attached, a bulk delete on the phone can reach the server and remove the contacts everywhere.&lt;/p&gt;

&lt;h2&gt;Things that surprised us&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;A server can answer &quot;saved&quot; and not save. After any bulk upload, read the contacts back and check.&lt;/li&gt;
  &lt;li&gt;Each card has an internal ID, and the same person can survive under a different one. Comparing by ID
  over-counts what was lost; compare by name, email and phone instead.&lt;/li&gt;
  &lt;li&gt;After a restore, look for duplicates again, and only remove a copy that adds nothing. One of seven we
  checked held a phone number the other card lacked.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Our free &lt;a href=&quot;/tools/contacts/&quot;&gt;contacts cleaner&lt;/a&gt; does steps 3 and 4 in your browser, using these
same rules.&lt;/p&gt;</content></entry><entry><title>Monitors you won&#x27;t learn to ignore</title><link href="https://makeprivacy.org/guides/monitors-you-wont-learn-to-ignore/"/><id>https://makeprivacy.org/guides/monitors-you-wont-learn-to-ignore/</id><published>2026-10-14T00:00:00Z</published><updated>2026-10-14T00:00:00Z</updated><summary>Our backup check sent 12 false alarms, 4 of them in 5 days. That is how a monitor teaches you to ignore it. What we changed so that an alert means something again.</summary><content type="html">&lt;p&gt;A monitor has one job: to be believed when it speaks. Every false alarm spends some of that trust, and
the real failure eventually arrives looking exactly like the ones you learned to dismiss.&lt;/p&gt;

&lt;h2&gt;What went wrong&lt;/h2&gt;
&lt;p&gt;Our daily backup check looked at whether the home server was reachable at the moment it ran. When the
server moved off the office network and onto a connection across the internet, it was often briefly
unreachable at that exact minute. One morning the check fired at 9:00 and the connection came back at 9:27.
Twelve alerts like that had fired, four of them in five days, and none of them meant anything.&lt;/p&gt;

&lt;h2&gt;Alarm on how long, not on a single moment&lt;/h2&gt;
&lt;p&gt;We changed the check to ask how long something has been down, not whether it is down right now. It now
alarms only after more than 26 hours: a day, plus slack. We tested it at 30 minutes, 25 hours, 27 hours, a
week and &quot;never seen&quot;: silent inside the window, loud outside it. Real errors, such as a sync folder
reporting a failure, still alarm at once.&lt;/p&gt;

&lt;h2&gt;Check the destination, not the sender&#x27;s log&lt;/h2&gt;
&lt;p&gt;Twice a log said everything was fine while nothing was arriving. One job&#x27;s log cleared its own failure
when a later run reported &quot;no change&quot;. In another case the local state looked healthy while every upload
was failing. The only reliable test is to look at the other end: is the newest copy actually there, and how
old is it?&lt;/p&gt;

&lt;h2&gt;Let silence be the alarm&lt;/h2&gt;
&lt;p&gt;A checker that has stopped running sends no error. So ours reports every day to a small service
elsewhere, and that service raises the alarm when a report doesn&#x27;t arrive. A daily &quot;all OK&quot; message is also
worth having: it proves the watcher is still watching.&lt;/p&gt;

&lt;h2&gt;Don&#x27;t cry wolf about the network&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Retry, with pauses.&lt;/strong&gt; Up to five attempts, waiting 15, 30, 45 and 60 seconds between them.
  Don&#x27;t retry when the other side rejects the report outright; that needs a person.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Wait for the network after waking.&lt;/strong&gt; A laptop that wakes up runs its scheduled jobs before
  Wi-Fi is back. Ours now waits up to two and a half minutes for the connection, then checks anyway and says so.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Warn for a blip, alarm for a stuck state.&lt;/strong&gt; A brief outage is logged as a warning; only
  something that stays broken becomes an alert.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Watch for shrinking, too&lt;/h2&gt;
&lt;p&gt;A database that has been emptied still backs up &quot;successfully&quot;. Our check compares the row count with
the previous backup and flags a drop of more than 20%.&lt;/p&gt;

&lt;h2&gt;Say it once, remind, and say when it&#x27;s over&lt;/h2&gt;
&lt;p&gt;Our mail server monitor alerts on the first failure, reminds every six hours while it lasts, and sends
a message when things recover. You always know whether a problem is still open without digging.&lt;/p&gt;

&lt;p&gt;For the backups themselves, see &lt;a href=&quot;/guides/backups-you-have-restored/&quot;&gt;Backups you have actually
restored&lt;/a&gt;.&lt;/p&gt;</content></entry></feed>
