# Frequently Asked Questions

> Answers to the most common questions about TagSpaces — covering installation, tagging, file management, licensing, privacy, and platform support.

export const extractText = (node) => {
  if (node == null) return '';
  if (typeof node === 'string' || typeof node === 'number') return String(node);
  if (Array.isArray(node)) return node.map(extractText).join(' ');
  if (node?.props?.children !== undefined) return extractText(node.props.children);
  return '';
};

<head>
  <script type="application/ld+json">{JSON.stringify({
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "@id": "https://www.tagspaces.org/faq/#faqpage",
    "url": "https://www.tagspaces.org/faq/",
    "name": "TagSpaces FAQ",
    "mainEntity": [
      ...Object.values(generalFAQ),
      ...Object.values(functionalityFAQ),
    ].map(faq => ({
      "@type": "Question",
      "name": faq.question,
      "acceptedAnswer": {
        "@type": "Answer",
        "text": extractText(faq.answer),
      },
    })),
  })}</script>
</head>

# Frequently Asked Questions

## General questions

{Object.keys(generalFAQ).map((faqIndex) => (

    
    <FAQ data={generalFAQ[faqIndex]} />
    

))}

<Spacer height={30} />

## Functionality questions

{Object.keys(functionalityFAQ).map((faqIndex) => (

    
    <FAQ data={functionalityFAQ[faqIndex]} />
    

))}
