Privacy Policy
Effective: September 11, 2026 / Last updated: October 6, 2026Life Hack Tools ("we") sets out the following privacy policy regarding how user information is handled in Batto (a baseball scorebook app; the "App"). The App requires no account registration and no login: it automatically creates an anonymous identifier for your device when it starts. Your game, team and schedule records are first stored on your device, and are then automatically sent to our servers on Firebase (Google Cloud Firestore) depending on your connection. Separately, we collect crash logs and performance data to detect and fix problems in the App and to improve how it runs. If you send feedback from the "Settings & support" screen, we also receive what you send, together with the app and device information we need to look into it. The App shows no advertising and performs no tracking for advertising purposes.
01Information Stored on Your Device and on Our Servers (Games, Teams, Schedule)
The App automatically creates an anonymous identifier for each device when it starts. There is no login screen. The following information is first stored on your device, and is then automatically sent to our servers on Firebase (Google Cloud Firestore, Tokyo region, project batto-lht), depending on your connection. Data that was already on your device before an update is sent to the server in bulk the first time you open the App after that update.
- Game records: At-bat results, runners, scores and similar records; batting order and fielding; both teams' names and player names; how the game ended; and the game's date and time (storage key: batto.activeGame.v1 and others).
- Team information: Team names, player names, uniform numbers, and the previous batting order and fielding (storage key: batto.teamProfiles.v1).
- Schedule: Whatever you enter for a scheduled game, such as its date and time, opponent and location.
- Anonymous identifier: An ID automatically generated for each device.
The following information is never sent to the server and is stored only on your device.
- Your name as the scorer: The name you enter for yourself during onboarding.
- Notification schedule identifiers: Used only to manage scheduled reminders on your device.
Past games: Up to 100 games are stored on your device. A game already sent to the server can still be read back from the server even after it disappears from the on-device list. Deleting a game from the "Past games" screen also deletes it from the server (a marker showing that it was deleted remains; the marker does not contain the game's content).
When you import the other team's record: If you paste the link to a game the other team shared from Batto, the App reads the information in that share (team names, player names in the batting order, at-bat and fielding records, score, and the game date) and saves it as part of your game record, on this device and on the server (Firebase) as your data. The imported record stays until you tap "Remove" or delete the game, and it is not removed even if the other team stops sharing. The imported record does not appear on pages you share. The other team's data is never changed.
Data on the server is restricted by Firebase security rules so that only the owner of that anonymous identifier can read or write it.
The anonymous identifier is stored on your device (on iOS, it is included in iCloud backups). If it is lost — for example when you change devices — you may no longer be able to access your previous records from the App. If you delete and reinstall the App, you also get a new anonymous identifier, and your earlier records can no longer be reached from that device (the data stays on the server; if you want it deleted, send a deletion request as described in section 10).
02Information Stored on Our Servers (Firebase)
What our Firebase servers store is the game, team and schedule information described in section 01, together with the anonymous identifier. All communication is encrypted (HTTPS / TLS).
- Sent: Game records (at-bat results, runners, scores and so on), batting order and fielding, both teams' names and player names, how the game ended, the game's date and time, the other team's record you imported (see section 01), schedule details (date/time, opponent, location and other text you enter), and the anonymous identifier. If you create a team page, the content shown on it (see section 04) and its settings (the page identifier, whether to show the place of upcoming games, and each game's "Hide from team page" mark) are also sent.
- Not sent: Your name as the scorer (entered during onboarding), and notification schedule identifiers. Photos, location data and contacts are never sent either. A schedule's "location" is stored as text you typed, not as location data (GPS).
Data on the server is tied to your device's anonymous identifier, and only the owner of that identifier can read or write it — this is enforced by Firebase security rules.
03Information Made Public via Shared Links
When you share a game, a public identifier is issued for that game, and the shared link points to the game itself. Every time the link is opened, it shows the current content at that moment. While a game is being recorded, the shared page also refreshes itself automatically. Sharing the same game more than once always produces the same link.
The App does not provide any mechanism to restrict who can view a shared page (such as a password or invitation). Anyone who knows the URL can view the shared content.
A shared page shows both teams' player names. However, your name as the scorer and the schedule's location are never shown on a shared page. Because player names are included, please be careful about who you send the URL to.
A share also includes which team you recorded as your own (batting first or second). This is used to check which side batted first when the other team imports the share into Batto, and it is not personal information. Anyone who receives your share link can import its content into their own game in Batto. An imported copy stays with the person who imported it even if you stop sharing later.
You can stop sharing a game at any time from the "Shared scores" screen in the App. Once you do, that shared page can no longer be viewed (the game record itself is not deleted). Copies of links you shared previously have been moved to Firebase and remain viewable. You can also revoke them from the "Shared scores" screen on the device you shared them from. If you no longer have that device (after changing phones or deleting the App), please contact us through the form below.
04Information Made Public on a Team Page
If you create a "Team page" for your own team from the team screen in the App, a page for that team is created (batto.lh.tools/teams/…). The link (URL) uses a hard-to-guess identifier, and anyone who knows the URL can view the page without logging in. The page is set not to appear in search engines (noindex). The App does not provide any mechanism to restrict who can view it (such as a password or invitation).
A team page shows the following information about that team.
- Team name
- Game results: Date, opponent team name, batting first or second, score, win/loss, and how the game ended (called off, rain-shortened, etc.), plus the win–loss record, runs scored and runs allowed counted from them. Games marked "Hide from team page" are left out of both the results and the stats. A game that is still being recorded is shown as in progress, with its score, only if you have shared it.
- Upcoming games: Date and time, opponent team name, batting first or second (up to 20). The place is shown only if you choose "Also show the place of upcoming games" (it is not shown at first).
- Stats for each player: The player's name and totals for batting (batting average, hits, home runs, RBIs, strikeouts, etc.) and pitching (innings pitched, strikeouts, runs allowed, etc.), for each year and for all time.
- Links to scorebooks: For games whose score you have shared, a link to that game's shared page (with player names; see section 03).
Your name as the scorer, schedule notes, the game's location, at-bat-by-at-bat records, batting orders and uniform numbers are never shown on a team page. Because player names are shown, please be careful about who you send the URL to.
The team page is updated automatically from your device, for example when a game ends or the schedule changes. It is built from the games on your device (up to 100), so older games that are no longer on your device also disappear from the team page. The page content is stored on our Firebase servers, together with the anonymous identifier of the device that created it and an internal identifier of the team, which are used to confirm who owns the page (they are not shown on the page).
You can turn off the team page at any time from the team screen in the App. Once it is off, the link can no longer be viewed (if you are offline, it is turned off once you are back online, and until then the old page may still be visible). If you create it again, it gets a new link. The team page is also deleted when you delete that team, or when we delete your server data at your request (see section 10).
If your anonymous identifier changes — for example because you delete and reinstall the App — you can no longer turn off or update a team page you created before from the App. In that case, please contact us through the form below. If you tell us the page's link, we will delete it.
05Crash Logs and Performance Monitoring
The App collects the following diagnostic information via Sentry in order to detect and fix problems in the App and to improve how it runs (quality improvement / analytics purposes).
- Crash and error information: Error information at the time of a crash or error, your device model, OS version, app version and similar diagnostic information that Sentry collects automatically.
- Performance data: Measurements of how fast the App runs, such as how long it takes to start up and to complete network requests, and whether screen rendering stalls. Not every measurement is sent; about 20% are selected at random.
We use Sentry with settings that keep personally identifiable information from being sent. We also do not implement any deliberate transmission of the game data or player names you enter. We never sell the diagnostic information we collect to third parties or provide it for advertising purposes.
06Information Sent When You Send Feedback
From the App's "Settings & support" screen, you can send us feedback, bug reports, questions and data deletion requests. The following information is sent only when you tap the send button.
- What you write: The type (feedback / bug / question / data deletion request) and your message
- Reply email address (optional): Sent only if you enter one. It is used only to reply to you.
- App and device information: App name; app version, build number and runtimeVersion; OS (iOS / Android) and OS version; your device's language setting; and your device model
- Anonymous identifier (data deletion requests only): When you choose "Request data deletion" as the type, your device's anonymous identifier is attached automatically so that we can find the data to delete. It is not attached for other types.
The app and device information is attached automatically so that we can investigate problems. Your game data, team information and shared scores are never attached automatically (unless you write them in your message).
What you send passes through our intake service on Cloudflare (form.lh.tools) and arrives in a private channel in our Slack workspace. On receipt, the time received, the country it was sent from (determined by Cloudflare from the IP address) and a Cloudflare request ID are added.
The sender's IP address is used to limit how many messages can be sent in a short period. It is not included in what reaches Slack, and we do not store it.
We use what you send only to respond to you and to investigate and improve the App, and we keep it for as long as needed to handle your request. We never sell it to third parties or provide it for advertising purposes. For how the contact form on our website handles information, see the Life Hack Tools privacy policy.
07Information We Do Not Collect
The App does not collect any of the following.
- Personally identifiable information such as your name or phone number (we receive an email address only if you enter one yourself as the reply address for feedback)
- Photos or camera imagery
- Location data (a schedule's "location" is stored as text you type in, not as location data)
- Contacts (address book)
The App also shows no advertising and performs no tracking for advertising purposes. We never sell or share user information with third parties.
08Third-Party Services
The App uses the following external services to provide its features. Each service handles data in accordance with its own privacy policy.
- Firebase (Google): Used to store your game, team and schedule records, for the score sharing feature (storing shared data and serving the viewing page), and to store the content of team pages. Data is stored in Google Cloud Firestore's Tokyo region.
- Sentry: Used to collect diagnostic information for crash analysis and performance monitoring (quality improvement / analytics purposes).
- Cloudflare: Used to run our feedback intake service (form.lh.tools).
- Slack: Used to receive submitted feedback in our private channel.
As described in section 01, your game, team and schedule records are automatically sent to our Firebase servers.
09Permissions
The App does not require sensitive device permissions such as camera, photo library, location or contacts.
Notifications (optional): when you add a scheduled game, the App may ask for permission to remind you the day before and on the day. Reminders are scheduled on your device only; neither the schedule nor any notification identifier is sent to a server. Every other feature works without this permission, and you can revoke it at any time in your device settings.
10Data Storage & Deletion
- Data kept only on your device (your name as scorer, notification schedules, etc.): Deleted when you uninstall the App from your device.
- Data on our servers (games, teams, schedule, shared games, team pages, anonymous identifier): Kept until you ask us to delete it. We do not set a retention period or delete it automatically. Not deleted when you uninstall the App. Deleting a game from the "Past games" screen also deletes it from the server (a marker showing that it was deleted remains, and this marker is kept in the same way as your other server data). Saving to the server is always on and cannot be turned off in the App's settings (except that a device that has sent a deletion request stops saving, as described in the next item).
- Requesting deletion of your server data: To have your data on the server deleted, go to "Settings" → "Support" in the App, choose "Request data deletion" as the type, and send it. We will then delete the data. The App has no setting that lets you delete it all yourself. Your device's anonymous identifier is attached to the request automatically (see section 06). It helps us find the data if you include the dates of the games and the names of the opposing teams in your message. We delete the data within 30 days of receiving your request. The following data saved by that device (anonymous identifier) is deleted: your games, teams and schedule on the server (including imported records of the other team and deletion markers), your shared score pages (their share links stop working), your team pages (their links stop working), older shares made from this device (copies of share links issued before; those links stop working), and your anonymous user record (anonymous identifier). Records on your device are not deleted. To remove them, delete the games or teams in the App, or delete the App from your device. Once a device has sent a deletion request, it stops saving to the server from that moment. It stays stopped even if you reopen the App, and the records on the device are kept. While saving is stopped, you cannot share a score or create a team page. If the request fails to send, saving does not stop. If you want to save from this device again, please contact us.
- If you reinstall the App: Deleting and reinstalling the App gives you a new anonymous identifier, and the data you saved to the server before can no longer be reached from that device (the data stays on the server). If you want it deleted, send a deletion request as described above. Because the request will carry your new identifier, please include clues to help us find the earlier data, such as game dates, opposing team names, or the links to your team page or shared scores. Note that restoring your device from a backup (iCloud / Google) may also bring back your earlier anonymous identifier. If you restore from a backup after your data has been deleted, please send a deletion request again.
- Shared scores: Stopping sharing from the "Shared scores" screen in the App makes that shared page no longer viewable (the game record itself is not deleted).
- Team pages: Turning off a team page from the team screen in the App makes it no longer viewable (your game records are not deleted). It is also deleted when you delete that team, or when we delete your server data at your request. If you can no longer turn it off from the App — for example after deleting and reinstalling the App — please send us the page's link through the form below, and we will delete it.
- Imported records of the other team: Deleted when you tap "Remove" in that game's scorebook or delete the game. A request to delete your server data also deletes them from the server. They are not removed when the other team stops sharing.
- Crash logs and performance data: Stored on Sentry's service.
- Feedback: Stored in a private channel in our Slack workspace and kept for as long as needed to handle your request.
11Children's Privacy
The App is intended for people aged 18 and over and is not directed to children. We do not knowingly collect personal information from children.
12Changes to This Policy
We may update this policy as needed. Any changes will be published on this page.
13Contact
For inquiries regarding this policy, to request deletion of a score or team page you have shared, or to request deletion of your data on our servers, please contact us below. For deleting your data on our servers, sending "Request data deletion" from "Settings" → "Support" in the App is the most reliable way, because your device's anonymous identifier is attached automatically.