All stats computed locally from your Messages database. No data leaves this machine.
Range: {{ date_range }}.
{% set grand_total = sent_total + received_total %}
Sent vs received
{% if grand_total > 0 %}
Sent
{{ sent_total | int }}
Received
{{ received_total | int }}
{{ grand_total | int }} messages total β
{{ (sent_total / grand_total * 100) | round(0) | int }}% sent,
{{ (received_total / grand_total * 100) | round(0) | int }}% received.
{% else %}
No messages in this date range.
{% endif %}
Top contacts
{% if top_contacts %}
{% set max_count = top_contacts[0].count %}
{% for c in top_contacts %}
{{ c.name }}
{{ c.count }}
{% endfor %}
Most-texted contact: {{ top_contacts[0].name }} ({{ top_contacts[0].count }} messages).
{% else %}
No data.
{% endif %}
Activity by hour
Local time β darker = more messages.
{% set hour_max = namespace(val=1) %}
{% for c in hour_counts %}{% if c > hour_max.val %}{% set hour_max.val = c %}{% endif %}{% endfor %}
{% for c in hour_counts %}
{% set pct = (c / hour_max.val * 100) | round(0) | int %}
{% if loop.index0 % 6 == 0 %}
{{ loop.index0 }}
{% else %}
Β·
{% endif %}
{% endfor %}
{% set peak_hour = namespace(h=0, v=0) %}
{% for c in hour_counts %}{% if c > peak_hour.v %}{% set peak_hour.h = loop.index0 %}{% set peak_hour.v = c %}{% endif %}{% endfor %}
{% if peak_hour.v > 0 %}
Peak hour: {{ peak_hour.h }}:00β{{ peak_hour.h }}:59 ({{ peak_hour.v }} messages).
{% endif %}
Activity by day of week
MonβSun β darker = more messages.
{% set dow_labels = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"] %}
{% set dow_max = namespace(val=1) %}
{% for c in dow_counts %}{% if c > dow_max.val %}{% set dow_max.val = c %}{% endif %}{% endfor %}
{% for c in dow_counts %}
{{ dow_labels[loop.index0] }}
{% endfor %}
{% set peak_dow = namespace(d=0, v=0) %}
{% for c in dow_counts %}{% if c > peak_dow.v %}{% set peak_dow.d = loop.index0 %}{% set peak_dow.v = c %}{% endif %}{% endfor %}
{% if peak_dow.v > 0 %}
Busiest day: {{ dow_labels[peak_dow.d] }} ({{ peak_dow.v }} messages).
{% endif %}
{% if top_groups %}
Top group chats
{% set grp_max = top_groups[0].count %}
{% for g in top_groups %}
{{ g.name }}
{{ g.count }}
{% endfor %}
Most active group: {{ top_groups[0].name }} ({{ top_groups[0].count }} messages).
{% endif %}
Generated by chatwire · all data stays on your Mac