How do you handle SEO on your site?
Without having to use a separate Plugin this is a good basic practice on setting up basic SEO for your site.

First create three new fields called "seoTitle", "seoDescription" and "seoKeywords". Put these three fields in a Global group called "globalSeo".

In your layout template "layouts/_layout.html"

    {% set seoTitle = globalSeo.seoTitle %}
    {% set seoDescription = globalSeo.seoDescription %}
    {% set seoKeywords = globalSeo.seoKeywords %}
    &lt;!DOCTYPE html&gt;
    &lt;html&gt;
        &lt;head&gt;
            &lt;title&gt;{% if title is defined %}{{ title }}{% else %}{{ seoTitle }}{% endif %}&lt;/title&gt;
            &lt;meta name="description" content="{% if description is defined %}{{ description }}{% else %}{{ seoDescription }}{% endif %}"/&gt;
            &lt;meta name="keywords" content="{{ seoKeywords }}"/&gt;

            {# You can then use the same fields for Facebook tags etc.. or create separate fields. #}
            &lt;meta property="og:title" content="{% if title is defined %}{{ title }}{% else %}{{ seoTitle }}{% endif %}"/&gt;
            &lt;meta property="og:description" content="{% if description is defined %}{{ description }}{% else %}{{ seoDescription }}{% endif %}"/&gt;
        &lt;/head&gt;
    &lt;body&gt;


You can now per template override these standard variables with your own for that particular page and/or template.

For a template:

    {% extends "layouts/_layout" %}
    {% set title = "This is a my custom Page Title" %}
    {% set description = "This is a my custom Page Description" %}


For a entry:

    {% extends "layouts/_layout" %}
    {% set title = entry.title %}
    {% set description = entry.descriptionField %}


.. or if you want to user to have custom control over the entry SEO as well you can always add the same "seoTitle" fields to the entry's Channel/Structure/Single and do:

    {% extends "layouts/_layout" %}
    {% set title = entry.seoTitle %}
    {% set description = entry.seoDescription %}