This is a tool to make it easier to check off addresses that you're writing letters or postcards to. Load in names and addresses, and those names and addresses will be added to the table below in a nice, large font with a nice, big checkbox for each one.
Recipient information IS NOT AND WILL NEVER BE uploaded anywhere beyond your own computer/phone/tablet. This page works entirely on your own computer/phone/tablet; once loaded, it does not rely on a server, and it does not transmit recipient names and addresses to anywhere else.
If you close the browser window, reload the page, etc., the information will persist in your browser (it will still be present when you return to this page), but the information will not be copied to anywhere else. This uses the “local storage” feature of modern browsers; if that feature is turned off or you use a Private Browsing/Incognito window, this page will remember nothing.
All of the code for this tool (except the Papa Parse CSV parser and JSZip zip archive library, which are off-the-shelf components) is within this page's source code. You can use your browser's View Source or Inspect Element command to read this page's source code; I encourage you to check it for yourself and not take my word for it.
Your CSV file or Excel spreadsheet will need to begin with a header row identifying each of the columns in the rows below it. For example:
First name,Last name,Address line 1,Address line 2,City,State,ZIP
The order doesn't matter (as long as it matches the real data below it), excess columns are ignored, and this tool attempts to interpret column names that are inexact matches, like “First” for “First name”. In the specific case of recipient names, a singular “Name” column will also work. If there are no name columns at all, this tool will fill in a random selection from Postcards to Voters's list of generic voter names (e.g., “Awesome Voter”) for each address, shown in gray to distinguish it from real data.
If your CSV file or Excel spreadsheet does not start with a header row (i.e., its first line/row is real data), this tool won't be able to make sense of it. If a header row is present, this tool will try to detect the column names for the recipient's name (either as separate first and last columns or one unified name column), address (either as two lines or just one), city, state, and ZIP. If any of those columns is missing or named something this tool doesn't recognize, this tool will reject the input.
Other spreadsheet formats: If you have a Numbers spreadsheet, you'll need to export that to a CSV file. (Sorry. I use Numbers, too, but I don't have a need for this to support Numbers documents.) If you have a Google Sheets spreadsheet, there's a CSV export option in the File menu. Excel spreadsheets will work as long as they are saved as .xlsx; if you have a .xls (no second x) file, you'll need to convert it to .xlsx using Excel, Numbers, LibreOffice, Google Sheets, etc.
The table contains 0 rows, of which 0 are checked. Jump to the first unchecked row.
|☑||Name and address|
The table contains 0 rows, of which 0 are checked, which is %. 🌟