Add records from a CSV file

Fill in the CSV template to bulk-add multiple visits and dishes to Private Bite at once.

1. Save the template

Download the official CSV template and open it in Excel or a spreadsheet app. Do not change the header row; row 2 contains a sample record.

Download the English CSV template

If you prefer Japanese column headers, you can also download the Japanese CSV template.

2. Fill it in with Excel or Google Sheets

Each row represents one dish. If you are recording multiple dishes from the same meal, see "Using visit groups" below. Do not change the header row's column names or order.

3. Save as CSV

When you are done, save the file as CSV (comma-separated). Choose UTF-8 encoding (a UTF-8 BOM is fine) and keep the comma as the delimiter.

4. Review before importing into Private Bite

In Private Bite, open Settings and choose "Add records from CSV," then select your file. On the confirmation screen, review any rows that need attention, possible duplicates, and whether to convert currencies before completing the import.

When you complete the import, the reviewed rows are added to your existing records. It does not update, replace, or merge any existing records or dishes.

Columns and rules

Only three columns are required: visit date, shop name, and dish name. Even when rows share a visit group, each row still needs its own value for these three columns. Every other column is optional and can be left blank.

ColumnRequiredDescriptionExample
Visit GroupOptionalA shared value used to group multiple dishes from the same meal. If blank, each row is treated as its own separate visit.001
Visit DateRequiredThe date you actually visited. Use year-month-day order in YYYY-MM-DD or YYYY/M/D format, for example 2026-07-16 or 2026/7/16. The date must be a real calendar date.2026-07-16
Shop NameRequiredThe name of the restaurant.Unagi no Mitani
Dish NameRequiredThe name of the dish you ordered.Hitsumabushi Set
Visit TypeOptionalDine-in, Takeout, or Delivery (English or Japanese; case-insensitive).Dine-in
CityOptionalThe city you visited.Okayama
Country CodeOptionalAn ISO 3166-1 alpha-2 two-letter code. Lowercase is automatically uppercased.JP
Shop AddressOptionalAs much of the address as you know.Okayama, Okayama Pref...
PriceOptionalThe amount you paid, as a number.4200
Currency CodeOptionalAn ISO 4217 three-letter code. Only the app's 20 supported currencies are accepted. If a price is entered and this is blank, the app's default currency is used.JPY
Taste RatingOptional1.0 to 5.0 in steps of 0.1.4.8
CategoryOptionalThe dish's category. Matches an existing category name if one exists.Eel
Cost RatingOptionalA whole number from 1 to 5.4
Atmosphere RatingOptionalA whole number from 1 to 5.5
Service RatingOptionalA whole number from 1 to 5.4
MemoOptionalFree-form text. Wrap it in double quotes if it contains a comma.Crispy skin
Want to RevisitOptionalYes/No, true/false, or 1/0 (Japanese "はい"/"いいえ" is also accepted).TRUE

The taste rating uses 1.0 to 5.0 in steps of 0.1. The cost, atmosphere, and service ratings are whole numbers from 1 to 5. The visit date must use year-month-day order in YYYY-MM-DD or YYYY/M/D format, for example 2026-07-16 or 2026/7/16. The date must be a real calendar date.

The file size limit is 10MB, and the data row limit is 10,000 rows. The file must use UTF-8 encoding (a UTF-8 BOM is fine) with comma delimiters; both LF and CRLF line endings are supported.

Using visit groups

Use "Visit Group" only when recording multiple dishes from the same meal. Rows that share the same value (for example, 001) are grouped into a single visit; only the dish name, price, taste rating, and category are treated as per-dish values. Every other value (visit date, shop name, visit type, city, country code, shop address, currency code, the three ratings, memo, and revisit flag) must match across all rows in the same visit group. If they don't match, the entire visit group is excluded from the import.

If you leave "Visit Group" blank, each row is imported as its own separate visit.

Example: entering "001" on three rows with dish names "Eel Rice Bowl," "Liver Soup," and "Pickles" records them as three dishes from a single visit.

Duplicates, restaurants, categories, and currency

Rows with a date, restaurant name, and dish name close to an existing record are treated as possible duplicates and are excluded by default. You can review them on the confirmation screen and choose to include them if needed.

A restaurant name that matches an existing one is treated as the same restaurant; a different spelling creates a new restaurant. A category name that matches an existing category is linked to it; unmatched category names can be resolved on the confirmation screen.

If you enter a price and leave the currency code blank, the app's default currency is used. The country code is never used to guess the currency. A currency code the app doesn't support is flagged as an error on the confirmation screen.

Common errors and fixes

Privacy

The CSV file is parsed entirely on your device and is not sent anywhere. Only if you choose currency conversion during import are the visit date and currency codes sent to the Frankfurter API to look up an exchange rate. Restaurant names, dish names, notes, and the price itself are never sent. See the full Privacy Policy for details.

If you have questions about importing, contact privatebite.support@icloud.com.