CoolFace
Datasetpublic

trentmkelly/dread-crime-forum

Dread Forum Archive A near-complete capture of public content from Dread, a Reddit-style discussion forum hosted as a Tor hidden service. Dread is one of the longest-running darknet community forums and a primary site for discussion of darknet markets, operational security, cryptocurrency, and related topics. The archive covers content posted between April 2018 and September 2025 and is structured as three Parquet-backed splits: posts, comments, and users (with parsed PGP key… See the full description on the dataset page: https://huggingface.co/datasets/trentmkelly/dread-crime-forum.

sourceHugging Facecc-by-sa-4.0updated 4mo agoView on Hugging Face
1likes69downloads
Dataset Card

Dread Forum Archive

A near-complete capture of public content from Dread, a Reddit-style discussion forum hosted as a Tor hidden service. Dread is one of the longest-running darknet community forums and a primary site for discussion of darknet markets, operational security, cryptocurrency, and related topics.

The archive covers content posted between April 2018 and September 2025 and is structured as three Parquet-backed splits: posts, comments, and users (with parsed PGP key metadata).

Dataset Statistics

SplitRowsDescription
posts715,877All discoverable posts across 2,272 subdreads
comments3,702,685All comments on captured posts
users258,848All users observed as post or comment authors

Coverage notes:

  • —Subdreads scraped: 2,271 / 2,272 (one excluded, see scraper notes)
  • —Posts with full body captured: 714,841. The remaining 1,036 are flagged unreachable in the source data and appear in the dump with body_html and body_text set to null.
  • —Distinct comment authors: 209,359
  • —Distinct post authors: 24,726

PGP keys (parsed from each user's /u/<name>/pgp page):

  • —Users with a published, ownership-verified PGP key: 25,449
  • —Users without a published key: 233,399

Every user with has_key = true is also marked ownership_verified = true - Dread only displays an armored key block on a profile after the user proves possession of the corresponding private key.

File Schemas

posts

FieldTypeNotes
post_keystringStable Dread identifier; primary key
titlestringPost title
authorstringUsername of the original poster
subdreadstringSubdread (community) name, without the d/ prefix
urlstringPath on Dread (e.g. /post/<post_key>)
comment_countintegerComment count as displayed on the listing
vote_countintegerNet vote count as displayed
posted_textstringHuman-readable timestamp as displayed (e.g. 3 days ago)
posted_datestringResolved date string when available
body_htmlstringRaw HTML of the post body (null if body was not captured)
body_textstringPlain-text rendering of the body (null if not captured)

comments

FieldTypeNotes
comment_keystringStable identifier; primary key
post_keystringForeign key to posts.post_key
parent_comment_keystring / nullForeign key to the parent comment, or null for top-level replies (children of the post itself). Use this together with post_key to reconstruct the full reply tree.
authorstringCommenter's username
vote_countintegerNet vote count
posted_datestringResolved date string
body_htmlstringRaw HTML of the comment body
body_textstringPlain-text rendering
depthintegerReply depth in the thread (0 = top-level reply to the post)

In this dump, only 96 comments (~0.003% of the total) have depth > 0 with parent_comment_key = null - these are orphans whose position in the tree could not be confirmed against the live thread page. Every other non-top-level comment links to a parent.

users

FieldTypeNotes
usernamestringDread username; primary key
has_keybool / nullWhether a PGP key block was published on the user's profile
ownership_verifiedbool / nullWhether Dread displays the "Ownership of this key has been verified" badge
pgp_keystring / nullThe full ASCII-armored OpenPGP public key, exactly as published
fingerprintstring / nullPrimary key fingerprint
primary_key_idstring / nullOpenPGP long key ID for the primary key
key_algorithmstring / nullOpenPGP algorithm code (e.g. 1 = RSA, 22 = EdDSA)
key_bitsinteger / nullKey length in bits where applicable
key_createdstring / nullISO-8601 creation timestamp
key_expiresstring / nullISO-8601 expiry timestamp, if set
user_idsarray / nullParsed UID records: {raw, name, comment, email}
namesarray / nullDistinct names extracted from UIDs
emailsarray / nullDistinct emails extracted from UIDs
fingerprintsarray / nullAll fingerprints (primary plus subkeys)
key_idsarray / nullAll long key IDs (primary plus subkeys)

For users without a published key, all PGP-related fields are null.

How the Data Was Collected

Pages were fetched directly over Tor from dreadytofatroptsdj6io7l3xptbet6onoyno2yv7jicoxknyazubrad.onion using a SOCKS5 connector with per-stream circuit isolation. Only public, server-rendered content is included. Drafts, private messages, and any account-only views are not present.

Considerations for Using the Data

Dread is a darknet community forum. The corpus contains substantial discussion of illicit topics including drug markets, vendor reviews, fraud, and operational security, alongside ordinary social conversation. Researchers should expect:

  • —Strong language, slurs, and harassment
  • —Detailed descriptions of illegal activity
  • —Discussion of vendors, marketplaces, and substances
  • —Personally selected pseudonyms; some users link real names or contact addresses in their PGP UIDs

PGP UIDs frequently contain self-published email addresses and names - these are included verbatim because they are part of the public key as Dread served it. Treat them as user-published metadata, not as verified identities.

License

This dataset is released under Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0).

You are free to share and adapt the material for any purpose, including commercially, provided you give appropriate credit and distribute any derivative works under the same license.

Citation

If you use this dataset in academic or other published work, please cite:

bibtex
@misc{kelly2026dread,
  author       = {Kelly, Trent},
  title        = {Dread Crime Forum},
  year         = {2026},
  publisher    = {Hugging Face},
  howpublished = {\url{https://huggingface.co/datasets/trentmkelly/dread-crime-forum}}
}