# blacksmithgu/obsidian-dataview

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/blacksmithgu-obsidian-dataview).**

8,544 stars · 497 forks · TypeScript · mit

## Links

- GitHub: https://github.com/blacksmithgu/obsidian-dataview
- Homepage: https://blacksmithgu.github.io/obsidian-dataview/
- awesome-repositories: https://awesome-repositories.com/repository/blacksmithgu-obsidian-dataview.md

## Topics

`obsidian-md` `obsidian-plugin` `query-language` `typescript`

## Description

This project is a metadata query engine and indexer for markdown files, designed to transform YAML frontmatter and inline fields into dynamic tables and lists. It provides a background process that extracts tags and custom fields into a searchable database, enabling the automated indexing of notes.

The system is distinguished by its dual approach to data retrieval: a dedicated query language for SQL-like filtering and grouping, and a JavaScript data API. This API allows for programmatic metadata extraction and the creation of custom views and extensions using TypeScript typings.

Its broader capabilities include task aggregation, where checkboxes from multiple files are collected into interactive lists, and diverse visualization options such as calendar views and formatted data tables. It also supports complex data transformations, including date and duration parsing, numeric math operations, and regex text validation.

The project is written in TypeScript and provides a programmable interface for accessing the internal metadata index.

## Tags

### Data & Databases

- [Query Languages](https://awesome-repositories.com/f/data-databases/query-languages.md) — Provides a dedicated line-by-line query language for filtering, sorting, and grouping markdown metadata. ([source](https://blacksmithgu.github.io/obsidian-dataview/queries/differences-to-sql/))
- [Query Syntax Extensions](https://awesome-repositories.com/f/data-databases/query-syntax-extensions.md) — Implements a dedicated SQL-like query language for filtering and grouping markdown metadata. ([source](https://blacksmithgu.github.io/obsidian-dataview/queries/dql-js-inline/))
- [Metadata Querying](https://awesome-repositories.com/f/data-databases/custom-data-fields/metadata-querying.md) — Extracts specific page properties and displays them in structured tables via custom metadata querying. ([source](https://blacksmithgu.github.io/obsidian-dataview/resources/examples/))
- [Data Filtering](https://awesome-repositories.com/f/data-databases/data-filtering.md) — Selects pages for processing based on tags, folders, and link directions using boolean logic. ([source](https://blacksmithgu.github.io/obsidian-dataview/queries/data-commands/))
- [Collection Manipulators](https://awesome-repositories.com/f/data-databases/data-manipulation-libraries/collection-manipulators.md) — Provides comprehensive array transformations including filtering, mapping, sorting, and flattening of metadata lists. ([source](https://blacksmithgu.github.io/obsidian-dataview/reference/functions/))
- [Data Querying](https://awesome-repositories.com/f/data-databases/data-querying.md) — Provides interfaces for filtering, sorting, and retrieving stored markdown metadata collections. ([source](https://blacksmithgu.github.io/obsidian-dataview/))
- [Data Transformation Functions](https://awesome-repositories.com/f/data-databases/data-transformation-functions.md) — Implements built-in functions and custom lambdas to reshape and calculate metadata values. ([source](https://blacksmithgu.github.io/obsidian-dataview/reference/expressions/))
- [Expression-Based Data Querying](https://awesome-repositories.com/f/data-databases/expression-based-data-querying.md) — Enables executing query strings and expressions programmatically to embed structured data into pages. ([source](https://blacksmithgu.github.io/obsidian-dataview/api/code-reference/))
- [Automated Document Indexing](https://awesome-repositories.com/f/data-databases/full-text-search-engines/metadata-indexing/structured-metadata-indexes/automated-document-indexing.md) — Creates structured views of documents by programmatically indexing YAML frontmatter and inline fields.
- [Implicit Metadata Indexing](https://awesome-repositories.com/f/data-databases/implicit-metadata-indexing.md) — Automatically identifies file-system metadata and internal links to include them in the searchable index.
- [Metadata Filtering](https://awesome-repositories.com/f/data-databases/metadata-filtering.md) — Provides mechanisms to filter markdown files based on structured metadata values and patterns. ([source](https://blacksmithgu.github.io/obsidian-dataview/resources/examples/))
- [Programmatic Index Filtering](https://awesome-repositories.com/f/data-databases/programmatic-index-filtering.md) — Allows executing JavaScript scripts to filter, sort, and extract data from the internal page index. ([source](https://blacksmithgu.github.io/obsidian-dataview/api/intro/))
- [Query Language Translators](https://awesome-repositories.com/f/data-databases/query-language-translators.md) — Translates a custom query language (DQL) into executable JavaScript for filtering and sorting metadata.
- [Query Result Viewers](https://awesome-repositories.com/f/data-databases/query-result-fetching/query-result-visualizers/query-result-viewers.md) — Provides a visual interface for displaying filtered query results as tables, lists, or calendars. ([source](https://blacksmithgu.github.io/obsidian-dataview/query/queries/))
- [Result Set Refinements](https://awesome-repositories.com/f/data-databases/query-result-fetching/result-set-refinements.md) — Filters, sorts, groups, and flattens result sets using logic based on page metadata. ([source](https://blacksmithgu.github.io/obsidian-dataview/queries/structure/))
- [Query Sorting](https://awesome-repositories.com/f/data-databases/query-sorting.md) — Orders output by one or more fields in ascending or descending sequence. ([source](https://blacksmithgu.github.io/obsidian-dataview/queries/data-commands/))
- [Query Filters](https://awesome-repositories.com/f/data-databases/query-sorting/query-filters.md) — Restricts, orders, and limits query results using metadata fields, tags, and folder paths. ([source](https://blacksmithgu.github.io/obsidian-dataview/query/queries/))
- [Result Grouping](https://awesome-repositories.com/f/data-databases/result-grouping.md) — Aggregates pages into rows based on unique field values to organize result sets. ([source](https://blacksmithgu.github.io/obsidian-dataview/queries/data-commands/))
- [Search Result Filtering](https://awesome-repositories.com/f/data-databases/search-result-filtering.md) — Excludes pages from result sets based on whether specific metadata fields meet logical conditions. ([source](https://blacksmithgu.github.io/obsidian-dataview/queries/data-commands/))
- [Source-Based Filtering](https://awesome-repositories.com/f/data-databases/source-based-filtering.md) — Retrieves files, sections, or tasks based on tags, folder paths, or bidirectional links. ([source](https://blacksmithgu.github.io/obsidian-dataview/reference/sources/))
- [Tabular Data Processors](https://awesome-repositories.com/f/data-databases/tabular-data-processors.md) — Filters, sorts, groups, and removes duplicates from lists of page metadata using built-in operators. ([source](https://blacksmithgu.github.io/obsidian-dataview/api/data-array/))
- [Cross-Reference Metadata Extraction](https://awesome-repositories.com/f/data-databases/cross-reference-metadata-extraction.md) — Extracts field values from linked pages by indexing through a page reference. ([source](https://blacksmithgu.github.io/obsidian-dataview/reference/expressions/))
- [Data Type Coercion](https://awesome-repositories.com/f/data-databases/data-processing-pipelines/data-transformation/data-parsing-extraction/typed-data-extraction/data-type-coercion.md) — Transforms strings and internal links into structured date, duration, or link objects for computations. ([source](https://blacksmithgu.github.io/obsidian-dataview/api/code-reference/))
- [Cross-Source Querying](https://awesome-repositories.com/f/data-databases/data-querying/cross-source-querying.md) — Uses logical operators to intersect or union multiple source filters for precise metadata extraction. ([source](https://blacksmithgu.github.io/obsidian-dataview/reference/sources/))
- [Data Visualization](https://awesome-repositories.com/f/data-databases/data-visualization.md) — Renders structured metadata into interactive tables and custom layouts using a JavaScript API.
- [Dynamic Type Parsing](https://awesome-repositories.com/f/data-databases/database-schema-mapping/row-mapping-logic/dynamic-type-parsing.md) — Dynamically determines the target object type for metadata fields to enable typed sorting. ([source](https://blacksmithgu.github.io/obsidian-dataview/annotation/types-of-metadata/))
- [Asynchronous File Operations](https://awesome-repositories.com/f/data-databases/file-management-systems/asynchronous-file-operations.md) — Processes markdown and CSV files in the background to update the metadata store without blocking the UI.
- [Numeric Calculators](https://awesome-repositories.com/f/data-databases/numeric-calculators.md) — Calculates sums, products, averages, and extrema across arrays of numeric metadata values. ([source](https://blacksmithgu.github.io/obsidian-dataview/reference/functions/))
- [Result Ordering and Limiting](https://awesome-repositories.com/f/data-databases/result-ordering-and-limiting.md) — Caps the number of returned records to a specific maximum value. ([source](https://blacksmithgu.github.io/obsidian-dataview/queries/data-commands/))
- [File Listing Filters](https://awesome-repositories.com/f/data-databases/result-ordering-and-limiting/file-listing-filters.md) — Generates filtered lists of file links based on specific metadata criteria and folder paths. ([source](https://blacksmithgu.github.io/obsidian-dataview/queries/query-types/))
- [In-Memory Caches](https://awesome-repositories.com/f/data-databases/search-indexing-technologies/search-indexing/search-and-indexing/static-content-indexing/in-memory-caches.md) — Maintains an in-memory map of file properties and tags to enable fast querying without disk re-scanning.
- [Text Pattern Matching](https://awesome-repositories.com/f/data-databases/text-pattern-matching.md) — Tests strings against regular expression patterns to identify matches or replace text segments. ([source](https://blacksmithgu.github.io/obsidian-dataview/reference/functions/))
- [Text Search](https://awesome-repositories.com/f/data-databases/text-search.md) — Performs keyword and pattern-based text matching within metadata collections. ([source](https://blacksmithgu.github.io/obsidian-dataview/reference/functions/))
- [Value Comparators](https://awesome-repositories.com/f/data-databases/value-comparators.md) — Evaluates equality and inequality of page metadata against static numbers, text, and dates. ([source](https://blacksmithgu.github.io/obsidian-dataview/reference/literals/))

### Development Tools & Productivity

- [Markdown Indexers](https://awesome-repositories.com/f/development-tools-productivity/search-indexing-tools/local-file-indexers/markdown-indexers.md) — Implements a background process that scans and indexes markdown files for rapid metadata discovery.
- [Metadata Retrieval APIs](https://awesome-repositories.com/f/development-tools-productivity/metadata-retrieval-apis.md) — Provides a programmatic JavaScript and TypeScript interface to retrieve vault metadata and render custom views.
- [Date String Parsers](https://awesome-repositories.com/f/development-tools-productivity/date-and-time-utilities/relative-date-formatting/date-string-parsers.md) — Provides utilities for converting date strings and timestamps into native date objects for metadata calculations. ([source](https://blacksmithgu.github.io/obsidian-dataview/reference/functions/))
- [Plugin API Extensions](https://awesome-repositories.com/f/development-tools-productivity/extension-apis/plugin-api-extensions.md) — Provides a JavaScript interface and TypeScript typings to programmatically extend system functionality and render views. ([source](https://cdn.jsdelivr.net/gh/blacksmithgu/obsidian-dataview@master/README.md))
- [Task Metadata Systems](https://awesome-repositories.com/f/development-tools-productivity/task-metadata-systems.md) — Binds custom key-value pairs and date shorthands to individual tasks using inline syntax. ([source](https://blacksmithgu.github.io/obsidian-dataview/annotation/metadata-tasks/))

### Part of an Awesome List

- [Integrated Task Lists](https://awesome-repositories.com/f/awesome-lists/productivity/notes-and-task-management/integrated-task-lists.md) — Produces bulleted lists or task lists derived from page metadata and task objects. ([source](https://blacksmithgu.github.io/obsidian-dataview/api/code-reference/))
- [Date Metadata Visualization](https://awesome-repositories.com/f/awesome-lists/devtools/calendars-and-dates/date-metadata-visualization.md) — Visualizes metadata results as markers on a monthly calendar based on date fields. ([source](https://blacksmithgu.github.io/obsidian-dataview/queries/query-types/))

### Business & Productivity Software

- [Cross-Board Task Aggregation](https://awesome-repositories.com/f/business-productivity-software/cross-board-task-aggregation.md) — Consolidates tasks from across multiple files into centralized, interactive lists filtered by status. ([source](https://blacksmithgu.github.io/obsidian-dataview/queries/query-types/))
- [Personal Knowledge Management](https://awesome-repositories.com/f/business-productivity-software/personal-knowledge-management.md) — Organizes markdown notes by extracting metadata into dynamic tables, lists, and calendars.
- [Task Property Extraction](https://awesome-repositories.com/f/business-productivity-software/project-task-management/task-property-retrieval-apis/task-property-extraction.md) — Retrieves automatic system metadata from tasks including completion status, file path, and line number. ([source](https://blacksmithgu.github.io/obsidian-dataview/annotation/metadata-tasks/))

### Content Management & Publishing

- [Document Metadata Definitions](https://awesome-repositories.com/f/content-management-publishing/document-metadata-definitions.md) — Assigns custom attributes to documents using frontmatter, inline fields, or implicit properties. ([source](https://blacksmithgu.github.io/obsidian-dataview/annotation/add-metadata/))
- [Inline Expression Evaluation](https://awesome-repositories.com/f/content-management-publishing/inline-expression-evaluation.md) — Scans markdown prose for expression syntax to inject computed metadata values during rendering.
- [Inline Metadata Embedding](https://awesome-repositories.com/f/content-management-publishing/inline-metadata-embedding.md) — Displays single indexed values or calculation results directly within the flow of a note. ([source](https://blacksmithgu.github.io/obsidian-dataview/))

### Operating Systems & Systems Programming

- [Programmatic Metadata Access](https://awesome-repositories.com/f/operating-systems-systems-programming/system-administration-maintenance/file-system-management/file-system-utilities/file-metadata-inspection/metadata-preservation-engines/metadata-extraction/programmatic-metadata-access.md) — Provides a programmatic interface to retrieve and filter page metadata to power custom extensions. ([source](https://blacksmithgu.github.io/obsidian-dataview/plugin/develop-against-dataview/))
- [File System Attributes](https://awesome-repositories.com/f/operating-systems-systems-programming/system-administration-maintenance/file-system-management/file-system-utilities/file-metadata-inspection/metadata-preservation-engines/metadata-extraction/file-system-attributes.md) — Retrieves automatic page properties such as creation dates, folder paths, and file sizes. ([source](https://blacksmithgu.github.io/obsidian-dataview/annotation/metadata-pages/))

### Software Engineering & Architecture

- [Custom Scripting Engines](https://awesome-repositories.com/f/software-engineering-architecture/custom-scripting-engines.md) — Implements an embedded scripting engine that executes JavaScript to build complex data views and utilities. ([source](https://blacksmithgu.github.io/obsidian-dataview/))
- [Custom Metadata Extensions](https://awesome-repositories.com/f/software-engineering-architecture/schema-metadata-utilities/schema-metadata-definitions/custom-metadata-extensions.md) — Allows defining and attaching user-defined metadata fields via YAML frontmatter or inline key-value pairs. ([source](https://blacksmithgu.github.io/obsidian-dataview/data-annotation/))
- [Nested Key Resolution](https://awesome-repositories.com/f/software-engineering-architecture/recursive-configuration-resolution/nested-key-resolution.md) — Allows retrieving specific values from nested object hierarchies using dot-notation. ([source](https://blacksmithgu.github.io/obsidian-dataview/reference/expressions/))
- [Type-Coerced Comparisons](https://awesome-repositories.com/f/software-engineering-architecture/structural-comparison-tools/comparison-logic-providers/type-coerced-comparisons.md) — Normalizes strings into date or duration objects during evaluation to ensure correct sorting and filtering.

### User Interface & Experience

- [Data API Bridges](https://awesome-repositories.com/f/user-interface-experience/data-api-bridges.md) — Exposes the internal metadata index to a programmable JavaScript interface for custom views.
- [Inline Metadata Annotations](https://awesome-repositories.com/f/user-interface-experience/document-metadata-annotators/inline-metadata-annotations.md) — Embeds metadata within markdown text using key-value syntax to make document properties machine-readable. ([source](https://cdn.jsdelivr.net/gh/blacksmithgu/obsidian-dataview@master/README.md))
- [Dynamic Data Tables](https://awesome-repositories.com/f/user-interface-experience/dynamic-data-tables.md) — Creates structured tables from data arrays to output as live views or plain Markdown. ([source](https://blacksmithgu.github.io/obsidian-dataview/api/code-reference/))
- [Dynamic Table Generators](https://awesome-repositories.com/f/user-interface-experience/dynamic-table-generators.md) — Transforms YAML frontmatter and inline fields into live-updating tables and lists.
- [Internal Wiki Linking](https://awesome-repositories.com/f/user-interface-experience/links/internal-wiki-linking.md) — Creates bidirectional internal links and external URLs to connect notes within the knowledge base. ([source](https://blacksmithgu.github.io/obsidian-dataview/reference/functions/))
- [Metadata Tables](https://awesome-repositories.com/f/user-interface-experience/page-headers/metadata-tables.md) — Renders metadata fields and calculated values into structured tables with customizable headers. ([source](https://blacksmithgu.github.io/obsidian-dataview/queries/query-types/))
- [Page Metadata Retrievers](https://awesome-repositories.com/f/user-interface-experience/page-headers/page-metadata-retrievers.md) — Exposes a developer interface to retrieve page metadata and automate the rendering of data views. ([source](https://blacksmithgu.github.io/obsidian-dataview/resources/develop-against-dataview/))
- [Dynamic Data Views](https://awesome-repositories.com/f/user-interface-experience/view-customizations/dynamic-data-views.md) — Provides a JavaScript API to create advanced, custom-rendered views of vault metadata. ([source](https://blacksmithgu.github.io/obsidian-dataview/queries/dql-js-inline/))
- [Dynamic HTML Generators](https://awesome-repositories.com/f/user-interface-experience/dynamic-html-generators.md) — Generates HTML elements and custom formatted views using JavaScript to display metadata. ([source](https://blacksmithgu.github.io/obsidian-dataview/api/code-reference/))
- [Inline Value Embedders](https://awesome-repositories.com/f/user-interface-experience/layout-utilities/presentation-engines/template-engines/control-flow-directives/expression-evaluators/expression-evaluators/inline-value-embedders.md) — Evaluates query expressions within markdown prose to display real-time page data during preview. ([source](https://cdn.jsdelivr.net/gh/blacksmithgu/obsidian-dataview@master/README.md))
- [Automatic Link Generation](https://awesome-repositories.com/f/user-interface-experience/links/automatic-link-generation.md) — Automatically generates link objects for files, sections, or blocks with support for custom display names. ([source](https://blacksmithgu.github.io/obsidian-dataview/api/code-reference/))

### Web Development

- [Dynamic List Rendering](https://awesome-repositories.com/f/web-development/dynamic-list-rendering.md) — Renders filtered page data into multiple visual formats including tables, lists, and calendar views. ([source](https://blacksmithgu.github.io/obsidian-dataview/queries/structure/))
- [Dynamic Content Insertion](https://awesome-repositories.com/f/web-development/content-insertion-utilities/dynamic-content-insertion.md) — Injects computed metadata values or function results directly into the text of a note. ([source](https://blacksmithgu.github.io/obsidian-dataview/queries/dql-js-inline/))

### Education & Learning Resources

- [Graph Link Traversals](https://awesome-repositories.com/f/education-learning-resources/tree-data-structures/tree-traversal-querying/graph-link-traversals.md) — Identifies connections between notes by performing depth-first searches across inbound and outbound links. ([source](https://blacksmithgu.github.io/obsidian-dataview/api/code-examples/))

### Programming Languages & Runtimes

- [Conditional Logic](https://awesome-repositories.com/f/programming-languages-runtimes/conditional-logic.md) — Uses conditional logic and object type determination to return values based on predicates. ([source](https://blacksmithgu.github.io/obsidian-dataview/reference/functions/))

### System Administration & Monitoring

- [Filesystem Change Monitors](https://awesome-repositories.com/f/system-administration-monitoring/filesystem-change-monitors.md) — Triggers custom logic and index refreshes automatically when files in the vault are updated. ([source](https://blacksmithgu.github.io/obsidian-dataview/resources/develop-against-dataview/))
