Direct answer: Paste HTML or visible text and the tool lists every date string locally, classifying the label before it as publish (发布时间 / published / posted), update (更新于 / 最后更新 / updated) or unlabelled. It also shows the surrounding context so you can judge what the date is for. No network, no upload.

Study 30 found 32 of 41 cached article pages carried a date string while none said “last updated” — dates are visible, but the labels say publish. This tool turns that distinction into a small local check so a publication date is not misread as a revision date.

A date is not an update

A date only means the text contains a date.
Whether the label says publish or update decides if it can serve as revision evidence.
No network: pasted HTML only.

Tool: paste → classify

    The default sample yields three date strings: one publish, one update and one unlabelled. The third date sits right after “Last updated 2026-11-02”, but the tool first cuts the previous date, then reads the label — otherwise it would misclassify the bare date as an update.

    The three label classes

    ClassLabelsUse
    Publish发布时间 / 发布日期 / 发布于 / 发布 / 日期 / 时间 / published / postedFirst publication; not a revision time
    Update更新于 / 最后更新 / 最近更新 / 更新时间 / updated / last updatedThe only label that claims an update
    UnlabelledNo label within 24 characters before the dateMay come from a list, sidebar or body; read the context

    Four common cases

    1. Publish only. An article header says “Published: 2026-10-30” — publication, not a recent edit.
    2. Bare date only. A list item or body shows 2026-10-30 without a label; it may just be a sort key.
    3. Update label. “Last updated 2026-11-02” is an explicit revision claim, still needing version records.
    4. Publish and update together. When both exist, record both; do not keep only one.

    Boundaries

    • No crawling: it analyses pasted content and knows nothing about status codes.
    • No truth check: labels and dates can both be wrong; the tool only classifies text.
    • No JavaScript execution: script-injected dates are invisible; paste rendered HTML.
    • Numeric dates only: worded dates are not recognised.
    • 24-character window: distant labels count as unlabelled; a preceding date is cut first to avoid bleed.

    Tests and reproduction

    Logic lives in js/visible-date-check.js (no dependencies, no network); scripts/test_visible_date_check.js covers 43 assertions: script/style/comment stripping, four date forms, Chinese and English publish/update labels, label distance, previous-date cut, three-class counts and empty input. Run:

    node scripts/test_visible_date_check.js

    Related: the visible article dates pilot (41 pages: 32 with dates, 0 update labels), the expanded article-page dates study (8 dateModified), the freshness checker (copyright, lastmod, structured dates), and the date snapshot diff (added, removed and relabelled across two snapshots).

    Sources and definitions

    1. Visible-date definitions: study 30's rules and 18 Python unit tests.
    2. Label classes: publish, update, unlabelled; update only counts “updated / last updated” forms.
    3. Date formats: numeric dates starting with 20xx; relative times are not parsed.
    About the author

    Lingyi Information Official (delivery team) works on requirements, proposals and acceptance for corporate websites, brand and smart-manufacturing projects. This article documents a rule implementation; results describe the pasted text only and make no claim about any site's maintenance, rankings or traffic.

    Read the label before calling it an update

    Record publication and revision separately; judge unlabelled dates from context; never let one date stand in for a version record.

    Request a sitemap review