ITADN

Post Date Often Included in Google Search Title Links

#270Closediorizu 创建于 2025-07-17
I
iorizucommented
Earlier this year, I noticed that when I googled the titles of some of your posts, the date was included in the title link: <details> <summary>Example</summary> <p> <img width="2077" height="870" alt="Image" src="https://github.com/user-attachments/assets/35549b88-85eb-49bf-8531-8a9abf525426" /> </p> </details> The issue is likely caused by the fact that the date is contained within the `h1` tag: ```html <main> <article> <h1> Effective Pull Requests <time class="meta" datetime="2018-05-03">May 3, 2018</time> </h1> .... </article> </main> ``` Looking at Google's [documentation](https://developers.google.com/search/docs/appearance/title-link#how-title-links-in-google-search-are-created), it does say that the contents of header tags are one of the sources used to create the title links. That still leaves the question of why some and not others, however. I tested all the posts and recorded the results in the table below. I don't see any patterns besides there being a solid run of unaffected posts near the beginning. <details> <summary>Results</summary> <p> | Post Title | Google Search URL | Title Link Contains Date? | |--------|--------|--------| font-size-adjust Is Useful | https://google.com/search?q=font-size-adjust+Is+Useful+site%3Amatklad.github.io | Not Found Inverse Triangle Inequality | https://google.com/search?q=Inverse+Triangle+Inequality+site%3Amatklad.github.io | Yes RSS Server Side Reader | https://google.com/search?q=RSS+Server+Side+Reader+site%3Amatklad.github.io | Yes Open Source Can't Coordinate | https://google.com/search?q=Open+Source+Can't+Coordinate+site%3Amatklad.github.io | Yes Profiling Challenge Results | https://google.com/search?q=Profiling+Challenge+Results+site%3Amatklad.github.io | No Scalar Select Anti-Pattern | https://google.com/search?q=Scalar+Select+Anti-Pattern+site%3Amatklad.github.io | Yes Performance Profile Visualization Challenge | https://google.com/search?q=Performance+Profile+Visualization+Challenge+site%3Amatklad.github.io | No Against Horizontal Scroll | https://google.com/search?q=Against+Horizontal+Scroll+site%3Amatklad.github.io | Yes A Fun Zig Program | https://google.com/search?q=A+Fun+Zig+Program+site%3Amatklad.github.io | No Things Zig comptime Won't Do | https://google.com/search?q=Things+Zig+comptime+Won't+Do+site%3Amatklad.github.io | No Underusing Snapshot Testing | https://google.com/search?q=Underusing+Snapshot+Testing+site%3Amatklad.github.io | No Random Numbers Included | https://google.com/search?q=Random+Numbers+Included+site%3Amatklad.github.io | Yes Tariffs | https://google.com/search?q=Tariffs+site%3Amatklad.github.io | No Deno Simple Server Side Rendering | https://google.com/search?q=Deno+Simple+Server+Side+Rendering+site%3Amatklad.github.io | Not Found A Debugger is a REPL is a Debugger | https://google.com/search?q=A+Debugger+is+a+REPL+is+a+Debugger+site%3Amatklad.github.io | Yes Use Long Options in Scripts | https://google.com/search?q=Use+Long+Options+in+Scripts+site%3Amatklad.github.io | No Comptime Zig ORM | https://google.com/search?q=Comptime+Zig+ORM+site%3Amatklad.github.io | Yes MacOS for KDE Users | https://google.com/search?q=MacOS+for+KDE+Users+site%3Amatklad.github.io | Yes What Is a dependency? | https://google.com/search?q=What+Is+a+dependency%3F+site%3Amatklad.github.io | Yes Minimal Version Selection Revisited | https://google.com/search?q=Minimal+Version+Selection+Revisited+site%3Amatklad.github.io | Yes Majjit LSP | https://google.com/search?q=Majjit+LSP+site%3Amatklad.github.io | Yes SemVer Is Not About You | https://google.com/search?q=SemVer+Is+Not+About+You+site%3Amatklad.github.io | Yes A Missing IDE Feature | https://google.com/search?q=A+Missing+IDE+Feature+site%3Amatklad.github.io | No Two Workflow Tips | https://google.com/search?q=Two+Workflow+Tips+site%3Amatklad.github.io | Yes On Ousterhout's Dichotomy | https://google.com/search?q=On+Ousterhout's+Dichotomy+site%3Amatklad.github.io | Yes The Watermelon Operator | https://google.com/search?q=The+Watermelon+Operator+site%3Amatklad.github.io | No What is io_uring? | https://google.com/search?q=What+is+io_uring%3F+site%3Amatklad.github.io | Yes Try to Fix It One Level Deeper | https://google.com/search?q=Try+to+Fix+It+One+Level+Deeper+site%3Amatklad.github.io | Yes The Fundamental Law Of Software Dependencies | https://google.com/search?q=The+Fundamental+Law+Of+Software+Dependencies+site%3Amatklad.github.io | No STD Doesn't Have to Abstract OS IO | https://google.com/search?q=STD+Doesn't+Have+to+Abstract+OS+IO+site%3Amatklad.github.io | Yes Primitive Recursive Functions For A Working Programmer | https://google.com/search?q=Primitive+Recursive+Functions+For+A+Working+Programmer+site%3Amatklad.github.io | No How I Use Git Worktrees | https://google.com/search?q=How+I+Use+Git+Worktrees+site%3Amatklad.github.io | No Properly Testing Concurrent Data Structures | https://google.com/search?q=Properly+Testing+Concurrent+Data+Structures+site%3Amatklad.github.io | Yes Regular, Recursive, Restricted | https://google.com/search?q=Regular,+Recursive,+Restricted+site%3Amatklad.github.io | Yes Basic Things | https://google.com/search?q=Basic+Things+site%3Amatklad.github.io | No Zig defer Patterns | https://google.com/search?q=Zig+defer+Patterns+site%3Amatklad.github.io | No Kafka versus Nabokov | https://google.com/search?q=Kafka+versus+Nabokov+site%3Amatklad.github.io | Yes Window: Live, Constant Time Grep | https://google.com/search?q=Window:+Live,+Constant+Time+Grep+site%3Amatklad.github.io | Yes Write Less | https://google.com/search?q=Write+Less+site%3Amatklad.github.io | No Of Rats and Ratchets | https://google.com/search?q=Of+Rats+and+Ratchets+site%3Amatklad.github.io | Yes Git Things | https://google.com/search?q=Git+Things+site%3Amatklad.github.io | Yes O(1) Build File | https://google.com/search?q=O(1)+Build+File+site%3Amatklad.github.io | Yes CI Dream | https://google.com/search?q=CI+Dream+site%3Amatklad.github.io | Yes Retry Loop | https://google.com/search?q=Retry+Loop+site%3Amatklad.github.io | Yes Non-Send Futures When? | https://google.com/search?q=Non-Send+Futures+When%3F+site%3Amatklad.github.io | Yes IronBeetle | https://google.com/search?q=IronBeetle+site%3Amatklad.github.io | No Push Ifs Up And Fors Down | https://google.com/search?q=Push+Ifs+Up+And+Fors+Down+site%3Amatklad.github.io | Yes Data Oriented Blogging | https://google.com/search?q=Data+Oriented+Blogging+site%3Amatklad.github.io | Yes Unified Versus Split Diff | https://google.com/search?q=Unified+Versus+Split+Diff+site%3Amatklad.github.io | Yes Unless Explicitly Specified Otherwise, Open Source Software With Users Carries Moral Obligations | https://google.com/search?q=Unless+Explicitly+Specified+Otherwise,+Open+Source+Software+With+site%3Amatklad.github.io | No LSP could have been better | https://google.com/search?q=LSP+could+have+been+better+site%3Amatklad.github.io | No UNIX Structured Concurrency | https://google.com/search?q=UNIX+Structured+Concurrency+site%3Amatklad.github.io | No What is an Invariant? | https://google.com/search?q=What+is+an+Invariant%3F+site%3Amatklad.github.io | Yes Comparative Analysis | https://google.com/search?q=Comparative+Analysis+site%3Amatklad.github.io | Yes TypeScript is Surprisingly OK for Compilers | https://google.com/search?q=TypeScript+is+Surprisingly+OK+for+Compilers+site%3Amatklad.github.io | Yes Role Of Algorithms | https://google.com/search?q=Role+Of+Algorithms+site%3Amatklad.github.io | No Types and the Zig Programming Language | https://google.com/search?q=Types+and+the+Zig+Programming+Language+site%3Amatklad.github.io | Yes Fantastic Learning Resources | https://google.com/search?q=Fantastic+Learning+Resources+site%3Amatklad.github.io | No On Modularity of Lexical Analysis | https://google.com/search?q=On+Modularity+of+Lexical+Analysis+site%3Amatklad.github.io | Yes Three Different Cuts | https://google.com/search?q=Three+Different+Cuts+site%3Amatklad.github.io | Yes GitHub Merge Queue | https://google.com/search?q=GitHub+Merge+Queue+site%3Amatklad.github.io | No The Worst Zig Version Manager | https://google.com/search?q=The+Worst+Zig+Version+Manager+site%3Amatklad.github.io | Yes Resilient LL Parsing Tutorial | https://google.com/search?q=Resilient+LL+Parsing+Tutorial+site%3Amatklad.github.io | Yes Zig Language Server And Cancellation | https://google.com/search?q=Zig+Language+Server+And+Cancellation+site%3Amatklad.github.io | No Value Oriented Programming Needs Implicits? | https://google.com/search?q=Value+Oriented+Programming+Needs+Implicits%3F+site%3Amatklad.github.io | Yes Data Oriented Parallel Value Interner | https://google.com/search?q=Data+Oriented+Parallel+Value+Interner+site%3Amatklad.github.io | Yes Reasonable Bootstrap | https://google.com/search?q=Reasonable+Bootstrap+site%3Amatklad.github.io | Yes Can You Trust a Compiler to Optimize Your Code? | https://google.com/search?q=Can+You+Trust+a+Compiler+to+Optimize+Your+Code%3F+site%3Amatklad.github.io | No UB Might Be a Wrong Term for Newer Languages | https://google.com/search?q=UB+Might+Be+a+Wrong+Term+for+Newer+Languages+site%3Amatklad.github.io | No Rust Is a Scalable Language | https://google.com/search?q=Rust+Is+a+Scalable+Language+site%3Amatklad.github.io | No Zig And Rust | https://google.com/search?q=Zig+And+Rust+site%3Amatklad.github.io | No An Engine For An Editor | https://google.com/search?q=An+Engine+For+An+Editor+site%3Amatklad.github.io | Yes Why SAT Is Hard | https://google.com/search?q=Why+SAT+Is+Hard+site%3Amatklad.github.io | Yes Three-State Stability | https://google.com/search?q=Three-State+Stability+site%3Amatklad.github.io | Yes <3 Deno | https://google.com/search?q=%3C3+Deno+site%3Amatklad.github.io | No How a Zig IDE Could Work | https://google.com/search?q=How+a+Zig+IDE+Could+Work+site%3Amatklad.github.io | No Rust's Ugly Syntax | https://google.com/search?q=Rust's+Ugly+Syntax+site%3Amatklad.github.io | Yes Next Rust Compiler | https://google.com/search?q=Next+Rust+Compiler+site%3Amatklad.github.io | No On Random Numbers | https://google.com/search?q=On+Random+Numbers+site%3Amatklad.github.io | No Ray Tracer Construction Kit | https://google.com/search?q=Ray+Tracer+Construction+Kit+site%3Amatklad.github.io | No If a Tree Falls in a Forest, Does It Overflow the Stack? | https://google.com/search?q=If+a+Tree+Falls+in+a+Forest,+Does+It+Overflow+the+Stack%3F+site%3Amatklad.github.io | No Accessibility: px or rem? | https://google.com/search?q=Accessibility:+px+or+rem%3F+site%3Amatklad.github.io | Yes Elements Of a Great Markup Language | https://google.com/search?q=Elements+Of+a+Great+Markup+Language+site%3Amatklad.github.io | No GitHub Actions Permissions | https://google.com/search?q=GitHub+Actions+Permissions+site%3Amatklad.github.io | No Why Linux Troubleshooting Advice Sucks | https://google.com/search?q=Why+Linux+Troubleshooting+Advice+Sucks+site%3Amatklad.github.io | Yes Hard Mode Rust | https://google.com/search?q=Hard+Mode+Rust+site%3Amatklad.github.io | No From Paxos to BFT | https://google.com/search?q=From+Paxos+to+BFT+site%3Amatklad.github.io | No Almost Rules | https://google.com/search?q=Almost+Rules+site%3Amatklad.github.io | Yes Unit and Integration Tests | https://google.com/search?q=Unit+and+Integration+Tests+site%3Amatklad.github.io | No Notes on GATs | https://google.com/search?q=Notes+on+GATs+site%3Amatklad.github.io | Yes Caches In Rust | https://google.com/search?q=Caches+In+Rust+site%3Amatklad.github.io | Yes Builder Lite | https://google.com/search?q=Builder+Lite+site%3Amatklad.github.io | No Binary Privacy | https://google.com/search?q=Binary+Privacy+site%3Amatklad.github.io | Yes Why LSP? | https://google.com/search?q=Why+LSP%3F+site%3Amatklad.github.io | No Self Modifying Code | https://google.com/search?q=Self+Modifying+Code+site%3Amatklad.github.io | No RPATH, or why lld doesn't work on NixOS | https://google.com/search?q=RPATH,+or+why+lld+doesn't+work+on+NixOS+site%3Amatklad.github.io | Yes Notes On Module System | https://google.com/search?q=Notes+On+Module+System+site%3Amatklad.github.io | Yes Generate All the Things | https://google.com/search?q=Generate+All+the+Things+site%3Amatklad.github.io | Yes One Hundred Thousand Lines of Rust | https://google.com/search?q=One+Hundred+Thousand+Lines+of+Rust+site%3Amatklad.github.io | Yes Fast Rust Builds | https://google.com/search?q=Fast+Rust+Builds+site%3Amatklad.github.io | No Large Rust Workspaces | https://google.com/search?q=Large+Rust+Workspaces+site%3Amatklad.github.io | Yes ; echo Shell Injection | https://google.com/search?q=;+echo+Shell+Injection+site%3Amatklad.github.io | No It's Not Always ICache | https://google.com/search?q=It's+Not+Always+ICache+site%3Amatklad.github.io | Yes Inline In Rust | https://google.com/search?q=Inline+In+Rust+site%3Amatklad.github.io | No How to Test | https://google.com/search?q=How+to+Test+site%3Amatklad.github.io | Yes Design Pattern: Kitchen Sink | https://google.com/search?q=Design+Pattern:+Kitchen+Sink+site%3Amatklad.github.io | Yes Concurrent Expression Problem | https://google.com/search?q=Concurrent+Expression+Problem+site%3Amatklad.github.io | Yes Async Benchmarks Index | https://google.com/search?q=Async+Benchmarks+Index+site%3Amatklad.github.io | Yes Goroutines Are Not Significantly Smaller Than Threads | https://google.com/search?q=Goroutines+Are+Not+Significantly+Smaller+Than+Threads+site%3Amatklad.github.io | No Delete Cargo Integration Tests | https://google.com/search?q=Delete+Cargo+Integration+Tests+site%3Amatklad.github.io | Yes Another Generic Dilemma | https://google.com/search?q=Another+Generic+Dilemma+site%3Amatklad.github.io | No matklad @ NEAR | https://google.com/search?q=matklad+@+NEAR+site%3Amatklad.github.io | No For the Love of Macros | https://google.com/search?q=For+the+Love+of+Macros+site%3Amatklad.github.io | Yes A Better Rust Profiler | https://google.com/search?q=A+Better+Rust+Profiler+site%3Amatklad.github.io | Yes ARCHITECTURE.md | https://google.com/search?q=ARCHITECTURE.md+site%3Amatklad.github.io | Yes Two Kinds of Code Review | https://google.com/search?q=Two+Kinds+of+Code+Review+site%3Amatklad.github.io | Yes Call Site Dependency Injection | https://google.com/search?q=Call+Site+Dependency+Injection+site%3Amatklad.github.io | Yes Notes On Lock Poisoning | https://google.com/search?q=Notes+On+Lock+Poisoning+site%3Amatklad.github.io | No Why an IDE? | https://google.com/search?q=Why+an+IDE%3F+site%3Amatklad.github.io | Yes Notes on Paxos | https://google.com/search?q=Notes+on+Paxos+site%3Amatklad.github.io | No Study of std::io::Error | https://google.com/search?q=Study+of+std::io::Error+site%3Amatklad.github.io | Yes Fast Thread Locals In Rust | https://google.com/search?q=Fast+Thread+Locals+In+Rust+site%3Amatklad.github.io | Yes Why Not Rust? | https://google.com/search?q=Why+Not+Rust%3F+site%3Amatklad.github.io | No Your Language Sucks, It Doesn't Matter | https://google.com/search?q=Your+Language+Sucks,+It+Doesn't+Matter+site%3Amatklad.github.io | Yes Rust in 2021 | https://google.com/search?q=Rust+in+2021+site%3Amatklad.github.io | Yes Code Smell: Concrete Abstraction | https://google.com/search?q=Code+Smell:+Concrete+Abstraction+site%3Amatklad.github.io | Yes Who Builds the Builder? | https://google.com/search?q=Who+Builds+the+Builder%3F+site%3Amatklad.github.io | No Things I Have Learned About Life | https://google.com/search?q=Things+I+Have+Learned+About+Life+site%3Amatklad.github.io | No Two Beautiful Rust Programs | https://google.com/search?q=Two+Beautiful+Rust+Programs+site%3Amatklad.github.io | No From Pratt to Dijkstra | https://google.com/search?q=From+Pratt+to+Dijkstra+site%3Amatklad.github.io | Yes Simple but Powerful Pratt Parsing | https://google.com/search?q=Simple+but+Powerful+Pratt+Parsing+site%3Amatklad.github.io | No Fast and Simple Rust Interner | https://google.com/search?q=Fast+and+Simple+Rust+Interner+site%3Amatklad.github.io | Yes Why is Rust the Most Loved Programming Language? | https://google.com/search?q=Why+is+Rust+the+Most+Loved+Programming+Language%3F+site%3Amatklad.github.io | No Mutexes Are Faster Than Spinlocks | https://google.com/search?q=Mutexes+Are+Faster+Than+Spinlocks+site%3Amatklad.github.io | Yes Spinlocks Considered Harmful | https://google.com/search?q=Spinlocks+Considered+Harmful+site%3Amatklad.github.io | No A Better Shell | https://google.com/search?q=A+Better+Shell+site%3Amatklad.github.io | No rust-analyzer Blog | https://google.com/search?q=rust-analyzer+Blog+site%3Amatklad.github.io | No Join Your Threads | https://google.com/search?q=Join+Your+Threads+site%3Amatklad.github.io | Yes Unsafe as a Human-Assisted Type System | https://google.com/search?q=Unsafe+as+a+Human-Assisted+Type+System+site%3Amatklad.github.io | Yes Perils of Constructors | https://google.com/search?q=Perils+of+Constructors+site%3Amatklad.github.io | No Linux Desktop Tips | https://google.com/search?q=Linux+Desktop+Tips+site%3Amatklad.github.io | No Rust Course Retrospective | https://google.com/search?q=Rust+Course+Retrospective+site%3Amatklad.github.io | No Consider Using Asciidoctor for Your Next Presentation | https://google.com/search?q=Consider+Using+Asciidoctor+for+Your+Next+Presentation+site%3Amatklad.github.io | No Exceptions vs Structured Concurrency | https://google.com/search?q=Exceptions+vs+Structured+Concurrency+site%3Amatklad.github.io | No A Trick For Test Maintenance | https://google.com/search?q=A+Trick+For+Test+Maintenance+site%3Amatklad.github.io | No Modern Parser Generator | https://google.com/search?q=Modern+Parser+Generator+site%3Amatklad.github.io | No Newtype Index Pattern | https://google.com/search?q=Newtype+Index+Pattern+site%3Amatklad.github.io | No Typed Key Pattern | https://google.com/search?q=Typed+Key+Pattern+site%3Amatklad.github.io | No Encapsulating Lifetime of the Field | https://google.com/search?q=Encapsulating+Lifetime+of+the+Field+site%3Amatklad.github.io | No Effective Pull Requests | https://google.com/search?q=Effective+Pull+Requests+site%3Amatklad.github.io | No Stopping a Rust Worker | https://google.com/search?q=Stopping+a+Rust+Worker+site%3Amatklad.github.io | No Make your own make | https://google.com/search?q=Make+your+own+make+site%3Amatklad.github.io | No Dynamic types in LLDB | https://google.com/search?q=Dynamic+types+in+LLDB+site%3Amatklad.github.io | No NixOS Notes | https://google.com/search?q=NixOS+Notes+site%3Amatklad.github.io | No Min of Three Part 2 | https://google.com/search?q=Min+of+Three+Part+2+site%3Amatklad.github.io | Not Found Min of Three | https://google.com/search?q=Min+of+Three+site%3Amatklad.github.io | Yes </p> </details> I also tested Bing and DuckDuckGo, but they did not exhibit this behavior, though DDG failed to remove the `h1` tag's contents from the summary: <details> <summary>DuckDuckGo</summary> <p> <img width="1545" height="773" alt="Image" src="https://github.com/user-attachments/assets/7ebb2713-49b9-40fe-b048-f069d13f4696" /> </p> </details> One possible solution would be to surround the `h1` with a `header` and make the date a sibling of the `h1` inside the `header`. According to [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/header), because it would be nested inside a `main` tag, it would not have the `banner` role, and would be interpreted as just another `section`. ```html <main> <article> <header> <h1> Effective Pull Requests </h1> <time class="meta" datetime="2018-05-03">May 3, 2018</time> </header> .... </article> </main> ``` You would have to use some CSS to get the spacing between the title and date to stay the same, though.
关闭于 2025-08-23 1 条评论