You've got better things to do than building another blog

Just drop-in Butter and get back to more interesting problems

Butter slides right into our apps and lets us avoid having yet another WordPress site.

Daniel, Founder of Collective Idea

All your requirements, solved

  • ButterCMS Feature Image Use main domain (for SEO)
  • ButterCMS Feature Image Friendly admin interface
  • ButterCMS Feature Image Upload images and media
  • ButterCMS Feature Image Edit slugs and meta tags
  • ButterCMS Feature Image Tag and categorize posts
  • ButterCMS Feature Image RSS/Atom Feeds
  • ButterCMS Feature Image Search
  • ButterCMS Feature Image Webhooks

Butter saves you development time

Save thousands of dollars worth of development time with our easy setup.

Just wanted to let you know that Butter is awesome. 5 minutes to set it up and write a sample blog post, that was it.

Jeff Judge, Bright

Butter gives you great SEO

Host your blog on your main domain and customize slugs and meta tags.

Butter gave us an easy-to-use interface for our writers and enabled the blog to be hosted on our main domain.

Max Blanshard, TutorMapper

Butter integrates with any tech stack

Our blog engine has a simple API and drop-in client libraries.

Butter made it extremely easy for us to build a new blog within our already-made website.

Johnnie Sanchez, Adelyte

Setup in minutes

require 'buttercms-ruby'
ButterCMS::api_token = "api_token_BQokikJOvBiI2HlWgH4olfQ2"

# Get first 10 posts
p ButterCMS::Post.all(page: 1, page_size: 10)

# Get single post by slug
p ButterCMS::Post.find("hello-world")

# Get RSS feed xml
p ButterCMS::Feed.find(:rss)
var butter = require('buttercms')('api_token_BQokikJOvBiI2HlWgH4olfQ2');

// Get first 10 posts
butter.post.list({page_size: 10, page: 1}).then(function(resp) {
  console.log(resp.data)
})

// Get single post by slug
butter.post.retrieve('hello-world').then(function(resp) {
  console.log(resp.data)
})

// Get RSS feed xml
butter.feed.retrieve('rss').then(function(resp) {
  console.log(resp.data)
})
var butter = require('buttercms')('api_token_BQokikJOvBiI2HlWgH4olfQ2');

// Get first 10 posts
butter.post.list({page_size: 10, page: 1}).then(function(resp) {
  console.log(resp.data)
})

// Get single post by slug
butter.post.retrieve('hello-world').then(function(resp) {
  console.log(resp.data)
})

// Get RSS feed xml
butter.feed.retrieve('rss').then(function(resp) {
  console.log(resp.data)
})
from butter_cms import ButterCMS
client = ButterCMS('api_token_BQokikJOvBiI2HlWgH4olfQ2')

def index(request):
 posts = client.posts.all(page=1, page_size=10)
 return render(request, 'blog/home.html', {'posts': posts})

def post(request, slug):
 post = client.posts.get(slug)
 return render(request, 'blog/post.html', {'post': post})
from butter_cms import ButterCMS
client = ButterCMS('api_token_BQokikJOvBiI2HlWgH4olfQ2')

# Get first 10 posts
print posts = client.posts.all(page=1, page_size=10)

# Get single post by slug
print post = client.posts.get('hello-world')

# Get RSS feed xml
print client.feeds.get('rss')
class Buttercms::PostsController < Buttercms::BaseController
  def index
    @posts = ButterCMS::Post.all(:page => params[:page], :page_size => 10)
  end

  def show
    @post = ButterCMS::Post.find(params[:slug])
  end
end
use ButterCMS\ButterCMS;
$butter = new ButterCMS('api_token_BQokikJOvBiI2HlWgH4olfQ2');

# Get first page of posts
$butter->fetchPosts(['page' => 1]);

# Get single post by slug
$butter->fetchPost('hello-world');

# Get RSS feed xml
$feed = $butter->fetchFeed('rss');
use ButterCMS\ButterCMS;
$butter = new ButterCMS('api_token_BQokikJOvBiI2HlWgH4olfQ2');

# Get first page of posts
$butter->fetchPosts(['page' => 1]);

# Get single post by slug
$butter->fetchPost('hello-world');

# Get RSS feed xml
$feed = $butter->fetchFeed('rss');
using ButterCMS;

var client = new ButterCMSClient("api_token_BQokikJOvBiI2HlWgH4olfQ2");

# Get first 10 posts
PostsResponse posts = client.ListPosts(page:1, pageSize: 10);

# Get single post by slug
PostResponse post = client.RetrievePost("hello-world");

# Get RSS feed xml
XmlDocument rssFeed = butterClient.GetRSSFeed();
package main

import (
    "github.com/buttercms/buttercms-go"
)

func main() {
    ButterCMS.SetAuthToken("api_token_BQokikJOvBiI2HlWgH4olfQ2")

    // Get first page of posts
    ButterCMS.GetPosts()

    // Get single post by slug
    ButterCMS.GetPost("hello-world")

    // Get RSS feed xml
    ButterCMS.GetFeed("rss")
}

Powerful admin interface

Try Butter free for 30-days

Get started now

Use Butter with any language/framework

Get started now

Sign up with Google Sign up with Github
or