docs/usage/links.md says the Description field is autogenerated from the webpage title when nothing is provided. It never is. The <title> fills Name, and Description is stored as the empty string.
The documented promise
docs/usage/links.md:21:
- The "Description" field will be autogenerated based on the webpage title if nothing is provided.
and the field table at :58:
| Description | Optional | Default: Autogenerated |
What the app does
Checked against linkwarden/linkwarden v2.16.1 (7550ebb8907e0cd22e8b3e0785bf3da03ab96e3a).
Creating a link by address alone, against a page whose <title> is Tcref Titled Page:
POST /api/v1/links {"url":"http://target-pages:8080/titled"}
→ 200
{"response":{"id":1,"name":"Tcref Titled Page","type":"url","description":"",
"url":"http://target-pages:8080/titled", ...}}
- expected (per the doc):
description = "Tcref Titled Page"
- actual:
description = "", while name = "Tcref Titled Page"
The code agrees. apps/web/lib/api/controllers/links/postLink.ts:81-88 picks name from the fetched <title> (extracted in apps/web/lib/shared/fetchTitleAndHeaders.ts:32-34), falling back to the address. :108 writes description: link.description — the value from the request, never anything derived. Nothing on the create path derives a description at all.
The line just below it does not happen either
docs/usage/links.md:22:
- The "Name" field overwrites the "Description" field while being displayed in the Link card.
The card renders no description at all, so the two never compete for a slot: LinkCard.tsx:144-148 and LinkList.tsx:98-102. A rendered list shows name, host, collection and date only —
| beta-doc | target-pages:8080 | Unorganized | Aug 24, 2026
| alpha-doc | target-pages:8080 | Unorganized | Aug 24, 2026
| Tcref Titled Page | target-pages:8080 | Unorganized | Aug 24, 2026
Suggested wording
The autogeneration is real, it just lands on a different field. The accurate statement is that Name defaults to the webpage title (falling back to the address) when nothing is provided, and that Description has no default. That would mean :21, :22 and the Default: Autogenerated cell at :58 — plus the Name | Optional | row at :57, which is where the "Autogenerated" note belongs.
Note
No screenshot for this one. The failing observation is an API response body, and the run that produced it captured no image of the defect; I am not attaching an unrelated frame.
docs/usage/links.mdsays the Description field is autogenerated from the webpage title when nothing is provided. It never is. The<title>fills Name, and Description is stored as the empty string.The documented promise
docs/usage/links.md:21:and the field table at
:58:What the app does
Checked against
linkwarden/linkwardenv2.16.1 (7550ebb8907e0cd22e8b3e0785bf3da03ab96e3a).Creating a link by address alone, against a page whose
<title>isTcref Titled Page:description="Tcref Titled Page"description="", whilename="Tcref Titled Page"The code agrees.
apps/web/lib/api/controllers/links/postLink.ts:81-88picksnamefrom the fetched<title>(extracted inapps/web/lib/shared/fetchTitleAndHeaders.ts:32-34), falling back to the address.:108writesdescription: link.description— the value from the request, never anything derived. Nothing on the create path derives a description at all.The line just below it does not happen either
docs/usage/links.md:22:The card renders no description at all, so the two never compete for a slot:
LinkCard.tsx:144-148andLinkList.tsx:98-102. A rendered list shows name, host, collection and date only —Suggested wording
The autogeneration is real, it just lands on a different field. The accurate statement is that Name defaults to the webpage title (falling back to the address) when nothing is provided, and that Description has no default. That would mean
:21,:22and theDefault: Autogeneratedcell at:58— plus theName | Optional |row at:57, which is where the "Autogenerated" note belongs.Note
No screenshot for this one. The failing observation is an API response body, and the run that produced it captured no image of the defect; I am not attaching an unrelated frame.