{
  "slug": "periodical",
  "category": "period-trackers",
  "name": "Periodical",
  "description": "Open source Android period calendar that estimates fertile days with the calendar method, with notes, symptoms and local backup.",
  "website": "https://arnowelzel.de/en/projects/periodical",
  "source": "https://codeberg.org/askaaron/periodical",
  "license": null,
  "platforms": [
    "android"
  ],
  "jurisdiction": null,
  "pick": false,
  "pick_reason": null,
  "disclosure": null,
  "grade": "B",
  "score": 77,
  "coverage": 100,
  "summary": "Periodical scores 77 out of 100 (grade B) on the period trackers criteria. It meets 4 of 6 criteria: open source, no ads or data sales, data stays on device and no account needed. It partly meets no trackers or telemetry. It does not meet independent audit.",
  "url": "https://privacyratings.com/period-trackers/periodical/",
  "markdown": "https://privacyratings.com/period-trackers/periodical/index.md",
  "answers": {
    "open_source": {
      "title": "Open source",
      "weight": 3,
      "answer": "yes",
      "evidence": "https://codeberg.org/askaaron/periodical/src/branch/main/COPYING",
      "note": "GPL-3.0."
    },
    "no_trackers": {
      "title": "No trackers or telemetry",
      "weight": 3,
      "answer": "partial",
      "evidence": "https://reports.exodus-privacy.eu.org/en/reports/de.arnowelzel.android.periodical/latest/",
      "note": "The Exodus report finds no trackers and the app has no internet permission, but the project website uses self-hosted Matomo analytics."
    },
    "no_ads": {
      "title": "No ads or data sales",
      "weight": 2,
      "answer": "yes",
      "evidence": "https://arnowelzel.de/en/projects/periodical",
      "note": "Free software with no ads."
    },
    "independent_audit": {
      "title": "Independent audit",
      "weight": 2,
      "answer": "no",
      "evidence": null,
      "note": "No independent audit is published."
    },
    "transparency_report": {
      "title": "Transparency report",
      "weight": 2,
      "answer": "n/a",
      "evidence": null,
      "note": "Only applies to hosted services with a website to test."
    },
    "user_notice": {
      "title": "Tells users about requests",
      "weight": 1,
      "answer": "n/a",
      "evidence": null,
      "note": "Only applies to hosted services with a website to test."
    },
    "tls": {
      "title": "TLS configuration",
      "weight": 2,
      "answer": "n/a",
      "evidence": null,
      "note": "Only applies to hosted services with a website to test."
    },
    "security_headers": {
      "title": "Security headers",
      "weight": 1,
      "answer": "n/a",
      "evidence": null,
      "note": "Only applies to hosted services with a website to test."
    },
    "web_standards": {
      "title": "Modern web standards",
      "weight": 1,
      "answer": "n/a",
      "evidence": null,
      "note": "Only applies to hosted services with a website to test."
    },
    "local_storage": {
      "title": "Data stays on device",
      "weight": 3,
      "answer": "yes",
      "evidence": "https://arnowelzel.de/en/projects/periodical",
      "note": "Data is stored only on the device, with optional backups to local storage."
    },
    "no_account_needed": {
      "title": "No account needed",
      "weight": 2,
      "answer": "yes",
      "evidence": "https://arnowelzel.de/en/projects/periodical",
      "note": "No account needed."
    }
  },
  "tests": {
    "ssllabs": null,
    "observatory": null,
    "internetnl_web": null,
    "internetnl_mail": null,
    "trackers": [],
    "tested_at": "2026-10-01T06:59:51.198Z"
  },
  "last_modified": "2026-10-01T07:44:20Z"
}