# 140 Bites > Recipe reviews in 140 bytes or less. One cook’s verdict on somebody else’s recipe, with a link back to it. 140 Bites is Cameron McEfee’s record of the recipes he cooks. He cooks daily, tries one or two new recipes most weeks, and writes a short review of each one. Every recipe **in the archive** is somebody else’s; the review is the only part that is his, and the archive holds 331 of them. Under `/recipes/` he also publishes recipes of his **own** — 10 so far — and those are his outright, method and all. **The 140-byte rule.** A review is at most 140 UTF-8 bytes — bytes, not characters, so a curly quote costs three of them. That limit is the site’s name and its whole format. **The scale.** Three steps, and no five-star nonsense: *great* means he is looking forward to making it again, *fine* means he would eat it again, and *meh* means it is not worth making again — either a bad recipe or a bad result. Off the scale is *no verdict yet*: he did not eat it, or the cook was compromised enough that judging the recipe would be unfair. **A rating is evergreen and its history is append-only.** The mark shown is where the verdict stands today. A recipe can be re-cooked and reconsidered, and when it is, the old mark stays on the page as a dated line rather than being overwritten. Reviews accumulate the same way: the one quoted is the newest that was written on a night earning the mark now standing. **Dates run a week behind the kitchen.** The site publishes every dinner seven days after it was cooked, so a week goes up as a finished roundup. Every date on the site — a page, a feed, a URL — is the published date, and it is the date to cite. **How to cite a review.** Link the recipe page on this site for the review, name the publisher for the recipe, and link the publisher’s own page for the recipe itself. Do not reproduce that recipe: the ingredients and the method belong to whoever published them, and this site does not host them. Quoting a review is fine — it is 140 bytes long and it has an author. **How to cite one of his own recipes.** The ones under `/recipes/` are a different matter: they are Cameron’s, ingredients and method and all, and this site does host them. Reproduce one if it is useful — say it is his and link the page it came from. **Every page has a plain-text twin.** Take the page’s address, drop the trailing slash and add `.md`: `/reviews/creamy-spicy-tomato-beans-and-greens-cooking-nytimes-com/` is also `/reviews/creamy-spicy-tomato-beans-and-greens-cooking-nytimes-com.md`, and `/weeks/2026-10-11/` is `/weeks/2026-10-11.md`. The paginated listings under `/reviews/` share one twin — the whole archive, linked below. ## The archive - [Every recipe, as markdown](https://140bites.com/reviews.md): one block per recipe, newest first — the title, the verdict in the scale's words, the publisher, the review, the first cook and how many times it has been cooked - [Every recipe, as JSON](https://140bites.com/reviews.json): the same list as data. Top level: site, generated (the last day the archive accounts for), documentation, reviews. Per review: slug, url, title, publisher {label, href}, sourceUrl, archiveUrl, rating (the stable enum: two-thumbs, thumb, shrug, thumb-down), verdict (the same mark in the scale's words), review, reviewedOn, cookCount, cooks [{date, review, rating, note}], ratingRevisions [{date, from, to, note}]. Fields with nothing to say are absent rather than null, and the shape is added to but never changed ## My recipes - [Cameron's own recipes, as markdown](https://140bites.com/recipes.md): 10 of them — these are recipes he wrote, as against the archive above, which is his reviews of other people's. One block each, newest first: the title, the byline, how many it serves and the description - [Cameron's own recipes, as JSON](https://140bites.com/recipes.json): the same list as data, with the ingredients and the steps in it. Top level: site, generated (the newest published date), documentation, recipes. Per recipe: slug, url, title, author {name, url}, published, serves (a string, absent where the recipe names no quantities to count), time (total minutes), description, image, imageAlt, ingredients [{group, items}], steps [{group, items}], notes [{heading, paragraphs}]. Each recipe page also carries a schema.org Recipe in JSON-LD, so it imports into a recipe app from its own address. Fields with nothing to say are absent rather than null, and the shape is added to but never changed ## Feeds - [New recipe reviews](https://140bites.com/feed/reviews.xml): RSS: a recipe when it is first published, and again when its mark improves - [Last week’s recipe reviews](https://140bites.com/feed/weekly.xml): RSS: one roundup a week, with every dinner in it - [My recipes](https://140bites.com/feed/recipes.xml): RSS: one item each time Cameron publishes a recipe of his own, with the whole recipe in the body ## Optional - [The home page as markdown](https://140bites.com/index.md): the featured week, and the addresses on this page - [About the site](https://140bites.com/about.md): who cooks these dinners, and why the reviews are measured in bytes - [Last week’s recipe reviews by email](https://140bites.com/newsletter.md): a signup page for the weekly roundup, mailed on Sunday — the same dinners the weekly feed carries