PHPackages                             osm/sitemap-php - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. osm/sitemap-php

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

osm/sitemap-php
===============

Fast and lightweight library for generating Google sitemap XML files and index of sitemaps

30313.3k175[10 issues](https://github.com/o/sitemap-php/issues)[7 PRs](https://github.com/o/sitemap-php/pulls)PHP

Since Sep 18Pushed 5y ago26 watchersCompare

[ Source](https://github.com/o/sitemap-php)[ Packagist](https://packagist.org/packages/osm/sitemap-php)[ RSS](/packages/osm-sitemap-php/feed)WikiDiscussions develop Synced 4d ago

READMEChangelogDependenciesVersions (1)Used By (0)

**For the 90's people, i'm keeping this repository as 5.2 compatible. If you need PSR-0 and Composer compatible version, [here is a fork that maintained by Evert Pot](https://github.com/evert/sitemap-php).**

What is sitemap-php ?
---------------------

[](#what-is-sitemap-php-)

Fast and lightweight class for generating Google sitemap XML files and index of sitemap files. Written on PHP and uses XMLWriter extension (wrapper for libxml xmlWriter API) for creating XML files. XMLWriter extension is enabled by default in PHP 5 &gt;= 5.1.2. If you having more than 50000 url, it splits items to seperated files. *(In benchmarks, 1.000.000 url was generating in 8 seconds)*

How to use
----------

[](#how-to-use)

Include Sitemap.php file to your PHP document and call Sitemap class with your base domain.

```
include 'Sitemap.php';
$sitemap = new Sitemap('http://example.com');

```

Now, we need to define path for saving XML files. This can be relative like `xmls` or absolute `/path/to/your/folder` and *must be a writable folder*. In default it uses same folder with your script.

```
$sitemap->setPath('xmls/');

```

Generated XML file names defaulted to `sitemap-*.xml`, you can customize prefix of filenames with `setFilename` method.

```
$sitemap->setFilename('customsitemap');

```

We'll add sitemap url's with `addItem` method. In this method, only first parameter (location) is required.

```
$sitemap->addItem('/', '1.0', 'daily', 'Today');
$sitemap->addItem('/about', '0.8', 'monthly', 'Jun 25');
$sitemap->addItem('/contact', '0.6', 'yearly', '14-12-2009');
$sitemap->addItem('/otherpage');

```

w/ method chaining.

```
$sitemap->addItem('/projects', '0.8')->addItem('/somepage')->addItem('/hiddenpage', '0.4', 'yearly', '01-01-2011')->addItem('/rss');

```

from a sql result, or whatever.

```
$query = Doctrine_Query::create()
				->select('p.created_at, p.slug')
				->from('Posts p')
				->orderBy('p.id DESC')
				->useResultCache(true);
$posts =  $query->fetchArray(array(), Doctrine_Core::HYDRATE_ARRAY);
foreach ($posts as $post) {
    $sitemap->addItem('/post/' . $post['slug'], '0.6', 'weekly', $post['created_at']);
}

```

If you need to change domain for sitemap instance, you can override it via `setDomain` method.

```
$sitemap->setDomain('http://blog.example.com');

```

Finally we create index for sitemap files. **This method also closes tags of latest generated xml file.**

```
$sitemap->createSitemapIndex('http://example.com/sitemap/', 'Today');

```

When you run your script, it generates and saves XML files to given path.

sitemap-0.xml

```

  http://example.com/
  1.0
  daily
  2011-04-07

  http://example.com/about
  0.8
  monthly
  2011-06-25

  http://example.com/contact
  0.6
  yearly
  2009-12-14

  http://example.com/otherpage
  0.5

```

sitemap-index.xml

```

  http://example.com/sitemap/sitemap-0.xml
  2011-04-07

```

You need to submit sitemap-index.xml to Google Sitemaps.

**Please note that, generating sitemaps not overrides any previous generated sitemap file. You need to delete old files before the operation.**

```
$ rm -rv sitemap-*

```

For the truncating a file with php, use the following snippet:

```
$handle = fopen("/path/to/sitemap/file.xml", "w");
fclose($handle);

```

###  Health Score

33

—

LowBetter than 75% of packages

Maintenance19

Infrequent updates — may be unmaintained

Popularity43

Moderate usage in the ecosystem

Community22

Small or concentrated contributor base

Maturity41

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 94.6% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/1dfe843a2613a05fdb04713b6b6fb8d65437ec8988daaf1dbf649045b1763189?d=identicon)[osm](/maintainers/osm)

---

Top Contributors

[![o](https://avatars.githubusercontent.com/u/179912?v=4)](https://github.com/o "o (35 commits)")[![mkly](https://avatars.githubusercontent.com/u/965353?v=4)](https://github.com/mkly "mkly (2 commits)")

---

Tags

generating-sitemapsgoogle-sitemapphpsitemapsitemap-filessitemap-php

### Embed Badge

![Health badge](/badges/osm-sitemap-php/health.svg)

```
[![Health](https://phpackages.com/badges/osm-sitemap-php/health.svg)](https://phpackages.com/packages/osm-sitemap-php)
```

###  Alternatives

[dudapiotr/zftable

Flexible tool to generate table

7530.9k](/packages/dudapiotr-zftable)[mouadziani/xstate

State machine library to play with any complex behavior of your PHP objects

866.7k](/packages/mouadziani-xstate)[pugx/godfather

Strategy pattern component as library and symfony2 bundle

2538.7k1](/packages/pugx-godfather)[akhaled/livewire-sweetalert

Integration Sweetalert with Livewire

181.9k4](/packages/akhaled-livewire-sweetalert)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
