How to delete data?


I have recently found out about this application, it is very useful for the stay at home period but I have one question: how can I access/delete my data? On the Raw Data page, I can export or look at the data but I don’t see any way of removing it.

Sorry if this is a stupid question… Thank you in advance!


It is technically possible with code, but we don’t have anything in the web-ui yet to expose this functionality.
We have planned to implement this, it should be easy to implement so you can delete individual events but we are also considering searching for events so you can more easily delete them in bulk but that will take longer time to do.

1 Like

Hey Johan, I’ve recently started using this app, and love it.
But I’m wondering if you (or anyone) can elaborate on the code to delete data? I’d like to remove some sensitive client data.
Thanks very much!

1 Like

@Stephen_Sanders you could try locating the Sqlite database (eg at .local/share/activitywatch/aw-server/peewee-sqlite.v2.db on Linux) and edit it with a standard sqlite client.

1 Like

Hi, I’m new to ActivityWatch on Windows and I’m trying to clear some logs.

I have searched with notepad++ and I have found that the information that I want to delete is in the file:


I have downloaded some Sqlite editor but when opening the data.db file it does not have the records, it is as if the database were empty.

I have also tried to rename the file data.db-wall to data-wall.db to be able to open it, but it tells me to insert a password because it is encrypted.

Can you explain to me what are the steps to follow in Windows?


if you have python installed, use this, the api which deletes single event in the timeline view

import requests
from concurrent.futures import ThreadPoolExecutor

BUCKET = "aw-watcher-window_Titan"
POOL = ThreadPoolExecutor(max_workers=10)
CONTAINS = "Private"
events = requests.get(f'http://localhost:5600/api/0/buckets/{BUCKET}/events?limit=1000').json()

def delete(e):
    resp =  requests.delete(f'http://localhost:5600/api/0/buckets/{BUCKET}/events/{e["id"]}')
    if resp.status_code != 200:
        print("failed to delete event", e['data']['title'])
        print("deleted event", e['data']['title'])

for e in events:
    if "Private" in e['data']['title']:
        POOL.submit(delete, e)

1 Like