UI Interactions & Animations Roundup #13

Original Source: http://feedproxy.google.com/~r/tympanus/~3/1A_irBGk1uE/

Lots of fantastic new animation concepts have been shared in the last couple of weeks with some shiny trends, lovely 3D effects and amazing immersive interactions.

We hope you enjoy this set and get updated with some fresh trends and ideas in UI interactions and animations.

2DOX Website Loader

by Halo Web

Luxam 3D Museum Scene

by Advanced Team

SQuarE

by Jacek Janiczak

Wine + Peace™ · Manifesto and Footer Homepage

by Pierre-Jean Doumenjou

Doonbeg—Golf Club

by Hrvoje Grubisic

Burger Menu animation

by Givi Dautashvili

Software Developer Website Interaction

by Cuberto

3D slider concept

by Hrvoje Grubisic

Lewa House – Early Concept

by Jack Harvatt

Naba Zabih Folio

by Zhenya Rynzhuk

Default Cube PRO

by Oleg Frolov

Lewa House Concept

by Nathan Riley

Méribel – posters

by Konstantin Yakovlev

kicks editorial

by Hampus Öhman

Instagram Social Widget

by Francesco Zagami

Landing page web design & interactions for Qoorio

by Vilius Vaicius

Motion Exercise N°008

by Bastien Allard

Bento 3D Design Vol.3

by Kirill Emelyanov

E-Commerce Web Interaction – Domingo

by Daniel Tan

Clothes Brand Website Design

by tubik

CUYANA — Store

by tokitoshi

The post UI Interactions & Animations Roundup #13 appeared first on Codrops.

Collective #642

Original Source: http://feedproxy.google.com/~r/tympanus/~3/h2TFPtEAdoc/

Collective 642 item image

Inspirational Website of the Week: Guillaume Colombel

Slick and cool, that’s the portfolio of Guillaume Colombel, our choice this week.

Get inspired

Collective 642 item image

Hotwire

Hotwire is an alternative approach to building modern web applications with Turbo at its heart, which is a set of complementary techniques for speeding up page changes and form submissions without writing any JavaScript at all.

Check it out

Divi Layout Packs

Our Sponsor
Instant websites for your clients with Divi Layout Packs

With the Divi Layout Packs you’ll get professional designs ready to be used for your client projects.

Start building

Collective 642 item image

AnimXYZ

The first composable CSS animation toolkit that helps you create, customize, and compose animations for your website without writing a single keyframe.

Check it out

Collective 642 item image

Let’s Build a Confetti Cannon

Learn how to make a confetti cannon in this interactive tutorial by Varun Vachhar.

Read it

Collective 642 item image

Santa Cruise

Help save Christmas with this fun game where you are a gift distributing Elf. By the folks of Kffein.

Play it

Collective 642 item image

A typographer and designer’s guide to elegance

A great interview with remarkable designer Ayaka B. Ito on her work and how she crafts elegenace.

Read it

Collective 642 item image

Aysenur Turk’s UI works

UI developer Aysenur Turk has made these stunning UI designs in 2020.

Check it out

Collective 642 item image

Type Scale Clamp Generator

A nice visual type scale generator using the clamp() property.

Check it out

Collective 642 item image

3D model configurator with React Three Fiber and gltfjsx

A fantastic React Three Fiber tutorial by Yuri Artyukh.

Watch it

Collective 642 item image

Pattern Generator

A super stylish tool to create unique, seamless, royalty-free patterns. Export as SVG, JPEG, or PNG.

Check it out

Collective 642 item image

Pinecraft

Make a digital tree & share it, and Sennep will plant a real one!

Check it out

Collective 642 item image

JavaScript Christmas

In case you missed it: One of Bekk’s advent calendars with original content.

Check it out

Collective 642 item image

Conditional JavaScript

Umar Hansa shares a few techniques which you can use for selectively downloading/executing resources such as JavaScript.

Check it out

Collective 642 item image

Video: Using Tailwind with WordPress

Michelle Barker chats with Keith Devon and Mark Wilkinson of Highrise Digital, alongside Ben Furfie, about her experience of using Tailwind CSS for building WordPress sites.

Watch it

Collective 642 item image

Scale

One new high-quality, open-source illustration each day with the option to customize the primary color.

Check it out

Collective 642 item image

EPIC days

A great project by EPIC where they share illustrations of many international days.

Check it out

Collective 642 item image

Free Christmas Illustrations

A high-quality free Christmas illustration pack for Photoshop, Illustrator, Adobe XD and Sketch.

Check it out

Collective 642 item image

Everything About Callback Functions in JavaScript

In this post, Dmitri Pavlutin explains the concept of a callback function and shows how to distinguish the two types of callbacks: synchronous and asynchronous.

Read it

Collective 642 item image

Improving Cross-Browser Testing, Part 1: Web Application Testing Today

The first article in a series of posts where you’ll learn about the current web-application testing landscape and what Firefox is doing today to allow developers to run more kinds of tests.

Read it

Collective 642 item image

10 Misconceptions on UX

Castor & Pollux put together this really beautifully designed quiz with 10 common misconceptions about design interfaces.

Check it out

Collective 642 item image

Recreating a Dave Whyte Animation in React-Three-Fiber

Learn how to use instanced rendering and post-processing techniques to recreate a hypnotic looping animation with react-three-fiber.

Read it

Collective 642 item image

Inspirational Websites Roundup #21

A hand-picked collection of some really good web designs for your inspiration.

Check it out

Collective 642 item image

UI Interactions & Animations Roundup #13

A fresh set of trendy UI interactions and animations for your inspiration.

Check it out

The post Collective #642 appeared first on Codrops.

What’s Coming To VueX?

Original Source: https://smashingmagazine.com/2020/12/vuex-library/

Vuex is the solution for state management in Vue applications. The next version — Vuex 4 — is making its way through the final steps before officially releasing. This release will bring full compatibility with Vue 3, but doesn’t add new features. While Vuex has always been a powerful solution, and the first choice for many developers for state management in Vue, some developers had hoped to see more workflow issues addressed. However, even as Vuex 4 is just getting out the door, Kia King Ishii (a Vue core team member) is talking about his plans for Vuex 5, and I’m so excited by what I saw that I had to share it with you all. Note that Vuex 5 plans are not finalized, so some things may change before Vuex 5 is released, but if it ends up mostly similar to what you see in this article, it should be a big improvement to the developer experience.

With the advent of Vue 3 and it’s composition API, people have been looking into hand-built simple alternatives. For example, You Might Not Need Vuex demonstrates a relatively simple, yet flexible and robust pattern for using the composition API along with provide/inject to create shared state stores. As Gábor states in his article, though, this (and other alternatives) should only be used in smaller applications because they lack all those things that aren’t directly about the code: community support, documentation, conventions, good Nuxt integrations, and developer tools.

That last one has always been one of the biggest issues for me. The Vue devtools browser extension has always been an amazing tool for debugging and developing Vue apps, and losing the Vuex inspector with “time travel” would be a pretty big loss for debugging any non-trivial applications.

Thankfully, with Vuex 5 we’ll be able to have our cake and eat it too. It will work more like these composition API alternatives but keep all the benefits of using an official state management library. Now let’s take a look at what will be changing.

Defining A Store

Before we can do anything with a Vuex store, we need to define one. In Vuex 4, a store definition will look like this:

import { createStore } from ‘vuex’

export const counterStore = createStore({
state: {
count: 0
},

getters: {
double (state) {
return state.count * 2
}
},

mutations: {
increment (state) {
state.count++
}
},

actions: {
increment (context) {
context.commit(‘increment’)
}
}
})

Each store has four parts: state stores the data, getters give you computed state, mutations are used to mutate the state, and actions are the methods that are called from outside the store to accomplish anything related to the store. Usually, actions don’t just commit a mutation as this example shows. Instead, they are used to do asynchronous tasks because mutations must be synchronous or they just implement more complicated or multi-step functionality. Actions also cannot mutate the state on their own; they must use a mutator. So what does Vuex 5 look like?

import { defineStore } from ‘vuex’

export const counterStore = defineStore({
name: ‘counter’,

state() {
return { count: 0 }
},

getters: {
double () {
return this.count * 2
}
},

actions: {
increment () {
this.count++
}
}
})

There are a few changes to note here. First, instead of createStore, we use defineStore. This difference is negligible, but it’s there for semantic reasons, which we’ll go over later. Next, we need to provide a name for the store, which we didn’t need before. In the past, modules got their own name, but they weren’t provided by the module itself; they were just the property name they were assigned to by the parent store that added them. Now, there are no modules. Instead, each module will be a separate store and have a name. This name is used by the Vuex registry, which we’ll talk about later.

After that, we need to make state a function that returns the initial state instead of just setting it to the initial state. This is similar to the data option on components. We write getters very similar to the way we did in Vuex 4, but instead of using the state as a parameter for each getter, you can just use this to get to the state. In the same way, actions don’t need to worry about a context object being passed in: they can just use this to access everything. Finally, there are no mutations. Instead, mutations are combined with actions. Kia noted that too often, mutations just became simple setters, making them pointlessly verbose, so they removed them. He didn’t mention whether it was “ok” to mutate the state directly from outside the store, but we are definitely allowed and encouraged to mutate state directly from an action and the Flux pattern frowns on the direct mutation of state.

Note: For those who prefer the composition API over the options API for creating components, you’ll be happy to learn there is also a way to create stores in a similar fashion to using the composition API.

import { ref, computed } from ‘vue’
import { defineStore } from ‘vuex’

export const counterStore = defineStore(‘counter’, {
const count = ref(0)

const double = computed(() => count.value * 2)

function increment () {
count.value++
}

return { count, double, increment }
})

As shown above, the name gets passed in as the first argument for defineStore. The rest looks just like a composition function for components. This will yield exactly the same result as the previous example that used the options API.

Getting The Store Instantiated

In Vuex 4, things have changed from Vuex 3, but I’ll just look at v4 to keep things from getting out of hand. In v4, when you called createStore, you already instantiated it. You can then just use it in your app, either via app.use or directly:

import { createApp } from ‘vue’
import App from ‘./App.vue’ // Your root component
import store from ‘./store’ // The store definition from earlier

const app = createApp(App)

app.use(store)
app.mount(‘#app’)

// Now all your components can access it via `this.$store`
// Or you can use in composition components with `useStore()`

// ———————————————–

// Or use directly… this is generally discouraged
import store from ‘./store’

store.state.count // -> 0
store.commit(‘increment’)
store.dispatch(‘increment’)
store.getters.double // -> 4

This is one thing that Vuex 5 makes a bit more complicated than in v4. Each app now can get a separate instance of Vuex, which makes sure that each app can have separate instances of the same stores without sharing data between them. You can share an instance of Vuex if you want to share instances of stores between apps.

import { createApp } from ‘vue’
import { createVuex } from ‘vuex’
import App from ‘./App.vue’ // Your root component

const app = createApp(App)
const vuex = createVuex() // create instance of Vuex

app.use(vuex) // use the instance
app.mount(‘#app’)

Now all of your components have access to the Vuex instance. Instead of giving your store(s) definition directly, you then import them into the components you want to use them in and use the Vuex instance to instantiate and register them:

import { defineComponent } from ‘vue’
import store from ‘./store’

export default defineComponent({
name: ‘App’,

computed: {
counter () {
return this.$vuex.store(store)
}
}
})

Calling $vuex.store, instantiates and registers the store in the Vuex instance. From that point on, any time you use $vuex.store on that store, it’ll give you back the already instantiated store instead of instantiating it again. You can call the store method straight on an instance of Vuex created by createVuex().

Now your store is accessible on that component via this.counter. If you’re using the composition API for your component, you can use useStore instead of this.$vuex.store:

import { defineComponent } from ‘vue’
import { useStore } from ‘vuex’ // import useStore
import store from ‘./store’

export default defineComponent({
setup () {
const counter = useStore(store)

return { counter }
}
})

There are pros and cons to importing the store directly into the component and instantiating it there. It allows you to code split and lazily loads the store only where it’s needed, but now it’s a direct dependency instead of being injected by a parent (not to mention you need to import it every time you want to use it). If you want to use dependency injection to provide it throughout the app, especially if you know it’ll be used at the root of the app where code splitting won’t help, then you can just use provide:

import { createApp } from ‘vue’
import { createVuex } from ‘vuex’
import App from ‘./App.vue’
import store from ‘./store’

const app = createApp(App)
const vuex = createVuex()

app.use(vuex)
app.provide(‘store’, store) // provide the store to all components
app.mount(‘#app’)

And you can just inject it in any component where you’re going to use it:

import { defineComponent } from ‘vue’

export default defineComponent({
name: ‘App’,
inject: [‘store’]
})

// Or with Composition API

import { defineComponent, inject } from ‘vue’

export default defineComponent({
setup () {
const store = inject(‘store’)

return { store }
}
})

I’m not excited about this extra verbosity, but it is more explicit and more flexible, which I am a fan of. This type of code is generally written once right away at the beginning of the project and then it doesn’t bother you again, though now you’ll either need to provide each new store or import it every time you wish to use it, but importing or injecting code modules is how we generally have to work with anything else, so it’s just making Vuex work more along the lines of how people already tend to work.

Using A Store

Apart from being a fan of the flexibility and the new way of defining stores the same way as a component using the composition API, there’s one more thing that makes me more excited than everything else: how stores are used. Here’s what it looks like to use a store in Vuex 4.

store.state.count // Access State
store.getters.double // Access Getters
store.commit(‘increment’) // Mutate State
store.dispatch(‘increment’) // Run Actions

State, getters, mutations, and actions are all handled in different ways via different properties or methods. This has the advantage of explicitness, which I praised earlier, but this explicitness doesn’t really gain us anything. And this API only gets more difficult to use when you are using namespaced modules. By comparison, Vuex 5 looks to work exactly how you would normally hope:

store.count // Access State
store.double // Access Getters (transparent)
store.increment() // Run actions
// No Mutators

Everything — the state, getters and actions — is available directly at the root of the store, making it simple to use with a lot less verbosity and practically removes all need for using mapState, mapGetters, mapActions and mapMutations for the options API or for writing extra computed statements or simple functions for composition API. This simply makes a Vuex store look and act just like a normal store that you would build yourself, but it gets all the benefits of plugins, debugging tools, official documentation, etc.

Composing Stores

The final aspect of Vuex 5 we’ll look at today is composability. Vuex 5 doesn’t have namespaced modules that are all accessible from the single store. Each of those modules would be split into a completely separate store. That’s simple enough to deal with for components: they just import whichever stores they need and fire them up and use them. But what if one store wants to interact with another store? In v4, the namespacing convolutes the whole thing, so you need to use the namespace in your commit and dispatch calls, use rootGetters and rootState and then work your way up into the namespaces you want to access getters and state from. Here’s how it works in Vuex 5:

// store/greeter.js
import { defineStore } from ‘vuex’

export default defineStore({
name: ‘greeter’,
state () {
return { greeting: ‘Hello’ }
}
})

// store/counter.js
import { defineStore } from ‘vuex’
import greeterStore from ‘./greeter’ // Import the store you want to interact with

export default defineStore({
name: ‘counter’,

// Then use the store
use () {
return { greeter: greeterStore }
},

state () {
return { count: 0 }
},

getters: {
greetingCount () {
return `${this.greeter.greeting} ${this.count}’ // access it from this.greeter
}
}
})

With v5, we import the store we wish to use, then register it with use and now it’s accessible all over the store at whatever property name you gave it. Things are even simpler if you’re using the composition API variation of the store definition:

// store/counter.js
import { ref, computed } from ‘vue’
import { defineStore } from ‘vuex’
import greeterStore from ‘./greeter’ // Import the store you want to interact with

export default defineStore(‘counter’, ({use}) => { // use is passed in to function
const greeter = use(greeterStore) // use use and now you have full access
const count = 0

const greetingCount = computed(() => {
return ${greeter.greeting} ${this.count} // access it like any other variable
})

return { count, greetingCount }
})

No more namespaced modules. Each store is separate and is used separately. You can use use to make a store available inside another store to compose them. In both examples, use is basically just the same mechanism as vuex.store from earlier and they ensure that we instantiating the stores with the correct instance of Vuex.

TypeScript Support

For TypeScript users, one of the greatest aspects of Vuex 5 is that the simplification made it simpler to add types to everything. The layers of abstraction that older versions of Vuex had made it nearly impossible and right now, with Vuex 4, they increased our ability to use types, but there is still too much manual work to get a decent amount of type support, whereas in v5, you can put your types inline, just as you would hope and expect.

Conclusion

Vuex 5 looks to be almost exactly what I — and likely many others — hoped it would be, and I feel it can’t come soon enough. It simplifies most of Vuex, removing some of the mental overhead involved, and only gets more complicated or verbose where it adds flexibility. Leave comments below about what you think of these changes and what changes you might make instead or in addition. Or go straight to the source and add an RFC (Request for Comments) to the list to see what the core team thinks.

How To Retain Customers During Covid-19

Original Source: http://feedproxy.google.com/~r/Designrfix/~3/BNiCHUHZzW4/how-to-retain-customers-during-covid-19

Customers in Canada are stuck inside with little to do other than work from home and teach their children. Covid-19 has changed lives in recent history, and people are struggling with what to do with all their time. When looking for a Canadian online casino, real money casinos are plentiful in this growing market. All […]

The post How To Retain Customers During Covid-19 appeared first on designrfix.com.

30 Gifts to Get Under $10 (Gift Exchange Ideas)

Original Source: https://www.hongkiat.com/blog/ideas-for-tech-gifts/

Gah! The gift exchange period is here. Whether you are at the office, or part of a community, the gift exchange tradition always has to happen. If you’re playing Secret Santa then you’d…

Visit hongkiat.com for full content.

20 Pocket-Sized Gift Ideas to Help Spread The Christmas Love

Original Source: https://www.hongkiat.com/blog/pocket-sized-gifts/

You probably have checked out most of the gift ideas available out there, but if you’re not into bulky gifts that could burn a hole in your pocket, then check out the pocket-sized options we…

Visit hongkiat.com for full content.

Fresh Resources for Web Designers and Developers (December 2020)

Original Source: https://www.hongkiat.com/blog/designers-developers-monthly-12-2020/

We are finally at the end of 2020, an unprecedented year of the decade, and with that we are also back with bring fresh resources for our fellow web developers. This year specifically, I’ve…

Visit hongkiat.com for full content.

5 Ways to Boost Engagement With Animation

Original Source: https://www.webdesignerdepot.com/2020/12/5-ways-to-boost-engagement-with-animation/

Animation is a fun and interesting way to bring life to a website. Used correctly, it can capture audience attention, make your website more engaging, and even improve your chances of delivering conversions for your clients.

Unfortunately, like many things in the web design world, it’s also easy to get too carried away with animation. As professional designers and developers, it’s up to us to find the line between making the most of animation on our website projects and creating a site that’s overwhelmed with too much activity.

Fortunately, by the time you’ve finished reading this article, you’ll have a deeper insight into how you can use animation in web design, without going too over the top.

Introducing Animation in Web Design

Animations are virtually everywhere on the web today.

In the past, when designers first discovered that they could embed movement into their websites, the amount of animation we saw was often higher than it needed to be. It wasn’t uncommon to find some websites running entirely on Flash, where every element could be animated.

Fortunately, the trends of modern web design have left those practices behind. These days, it’s a lot more common to make animation a part of the overall user experience, rather than focusing on them as a centerpiece attraction. For instance, you’ve probably noticed plenty of animated sliders showing off pictures in a gallery, or transition animations when people hover over a button.

Since it’s entirely possible to construct an entire website with no animations at all, the key to creating an engaging website today is making sure that every animation you use serves a specific purpose. Your animations should make a website more attractive, easier to use, and better for navigation. Add too many, and you could even risk slowing down a site.

So, where does it make sense to use animation for web design?

1. Loading Animations

One of the best ways to use animations in a website is to distract and delight users as a page loads. You can use the animation to deliver a unique experience, or even just highlight the playful nature of your brand. For instance, just check out this classic load animation called “Tightrope.”

You can also use things like particle animations to capture a customer’s attention and help your visitors relax when they visit a website. Particle animations can be interactive or non-interactive, and they’re a great way to stop visitors from feeling frustrated when a page takes too long to load.

A website by Edan Kwan called “Particle Love” shows you exactly what kind of experience you can create with real-time animations.

The more you can delight visitors with experiences that keep them engaged while the information they need is loading, the less likely people will be to hit the “back” button.

2. Microinteraction Animations

Microinteractions are quick and simple animations that come with specific use cases. Usually, this animation works to provide visual feedback and information when you interact with a specific element.

For instance, this microinteraction design from Colin Garven encourages users to enter their email address and password into a login field:

Ideally, the best way to use microinteractions is to make them as subtle as possible. These tools aren’t here to steal the spotlight from other information on the page. However, they can sometimes encourage your viewers to take the next stage in their conversion journey.

Animated microinteractions can be as complex or as basic as you choose. For instance, you could use them when:

Highlighting if a feature is switched on or off;
Letting users know when actions were successful (like sending a message in a contact form);
Showcasing important information, like prices on a table;
Animating icons on your site to encourage action;
Depending on your experience with animations, you can even find themes and plugins that come with options already built-in.

3. Dynamic Backgrounds

An animated background can be an excellent way to make your website stand out from the crowd. However, it’s important to remember that excessive animation has a habit of making your site slower and more clunky than it needs to be.

The animated background on the mystaticself.com website is fantastic for introducing customers to new information with a handy dynamic menu.

Often, the only reason that you should create your own dynamic background for a website, is if it’s going to improve your customer’s experience in some way.

Remember, ensure that the animations that you’re using on your website aren’t going to make any aspect of your site more difficult to use. Animated backgrounds need to offer a compliment to your existing website, rather than distracting customers from what they want to do.

Before you go all-in with your background animations, focus on animating small sections of an image, one piece at a time. You can also animate components with very small motions too.

4. Reveal Hidden Messages

Another excellent way to use animation in web design is to harness it for showcasing important information. For instance, a navigation menu is an important component in your website design, but it can also take up a lot of valuable space.

In some cases, a hidden menu that appears when a customer scrolls over a small box or icon could make a lot of sense. You can also think about animated drop-down menus if you’re working with a website that has a large number of pages.

Check out this fun example of an animated CSS3 menu:

The sections change color and move as you hover over them, making it easier to see exactly where you’re clicking.

It’s up to you exactly how creative you want to be when you’re playing with animated menus. The easiest option is often just to have a component that changes color or shape with a hover effect. However, you can also expose hidden menus and extra information too.

For instance, with some websites, you can create pictures that turn over to show information on the other side. That means that you could create an about page with pictures of team members, which flip to show biography information.

Just make sure that everything works smoothly, both on desktop and mobile.

5. Try Carousels

Finally, we come to perhaps the simplest and most popular way of using animation in web design. Carousels are a common component of almost every theme on the web today. They’re great for showing off useful information, such as what a website has to offer, or which deals are available.

When creating a carousel, you can either give your users control over how quickly an image transitions, or you can implement automatic movement. On the heathfield.co.uk website, the designer has added buttons to let you flip backwards and forwards between photos, while also ensuring that the animation is automatic.

Without the animation to show you the pictures sliding into space, the transitions between each picture would be instant – which is a little more jarring for viewers.

Sliders are such a common component of web design today that customers almost expect to see them on many websites. That means that you can enjoy a very effective experience if you want to avoid doing anything too dramatic with your websites.

You can use sliders for everything from showing off products, to displaying testimonials from customers and more. It’s a great way to compress a lot of useful information into one small space on a site.

Use Website Animation Carefully

The most important thing for most designers to remember with animation and web design is that it’s entirely possible to have too much of a good thing. When it comes to creating amazing designs for your clients, you can take advantage of animation to encourage more engagement and a unique experience. However, you shouldn’t allow yourself to go too over the top.

Rather than animating every aspect of a page to constantly grab visitor attention, think about how you can make the visitor experience more compelling with the right animation choices. If an entire page of animation on the background isn’t right for your target audience, perhaps custom animations on a navigation bar or a slider would be a good option instead.

At the same time, remember to make the most of the latest technologies on the market for adding animation to web design. A good combination of CSS3, JavaScript, and HTML5 often makes it easier to create more immersive, high-quality animations that users can interact with on desktop and mobile alike.

Source

p img {display:inline-block; margin-right:10px;}
.alignleft {float:left;}
p.showcase {clear:both;}
body#browserfriendly p, body#podcast p, div#emailbody p{margin:0;}

Search Engine Optimization Checklist (PDF)

Original Source: https://smashingmagazine.com/2020/12/search-engine-optimization-checklist/

Search engine optimization (SEO) is an essential part of a website’s design, and one all too often overlooked. The most beautiful, spectacular site in the world won’t do anyone much good if people can’t find it on Google (or Bing, or DuckDuckGo).

Implementing SEO best practice doesn’t just give you the best chance possible of ranking well in search engines; it makes your websites better by scrutinizing quality, design, accessibility, and speed, among other things. It’s a daunting world for those who aren’t familiar with it (and even those who are at times), so this checklist breaks down key factors to consider when undertaking an audit.

For an overview of the SEO community — publications, thought leaders, podcasts, documentation, forums, things like that — I humbly point you towards the Smashing Guide To The World of Search Engine Optimization.

If you’re ready to get stuck in, read on.

Table Of Contents

Get Ready: A Healthy Mindset
Setting Realistic Goals
Defining The Environment
On-page
Off-page
Testing And Monitoring
Quick Wins

Note: You can also just download the checklist (PDF, 158 KB). Happy optimizing, everyone!

Get Ready: A Healthy Mindset

Establishing A Shared SEO Culture
Done properly SEO is not something you implement once then walk away from never to think about again. It’s something that ought to be carefully maintained over years. One of the reasons audits can feel so overwhelming is because long-neglected SEO piles up into a big problem. Well maintained SEO runs like a dream, and is better placed to adapt to the turbulence of algorithm updates. Communicate the value of SEO, and don’t do it by lecturing. Following best practice usually means a better website, more organic traffic, and happier visitors. Win, win, win.
Quality, Not ‘Quality’
There is sometimes more talk about quality than there is commitment to it. Behind all the stats, tools, and quick wins there sits one simple SEO truth: it is your job to make the site as good as it possibly can be. Only then can you hope to be better than all the other sites you’re competing with for search queries. From UX design to copywriting, quality content takes commitment, passion, and time. Be ready to face your site’s limitations and work to improve them — for your sake as much as anyone else’s. Great content is so, so much easier to optimize than bad content is.
A Holistic Approach
Strong SEO is the sum total of a website, it’s not something to saddle one department (or person) with. It can be bolted on to an extent, but that’s never as good as when it’s woven into the site’s DNA. Implementing SEO well means open communication between different members of the team — from SEO execs to writers to developers. Before you even start, understand everyone likely has a role to play.

“Where Does SEO Belong In Your Web Design Process?” by Suzanne Scacca

Join The Community
Guides like this cover as much as they can but there’s no getting away from the fact that SEO is constantly evolving. It is a huge industry, with its own publications, thought leaders, podcasts, video series, and more. Take advantage of those resources, plug into the SEO world. Just following a handful of reputable Twitter accounts and listening to a podcast or two a month will go a long way.

A Smashing Guide To The World Of Search Engine Optimization

Setting Realistic Goals

Prioritizing Metrics
Online metrics are almost limitless. Like, literally. They just won’t stop. Numbers are useful, but if you’re not careful they’ll be the ones calling the shots rather than you. Don’t let KPIs be the tail that wags the dog. Work out what your priorities are, how you can measure progress, and the limitations of the available data. The answers to these questions vary from site to site.

Lighthouse for automated web page audits
Go Auditor

Timeframes
Goals border on meaningless if you don’t have a time frame for them. It doesn’t have to be the be all and end all (SEO never stops, after all) but by giving yourself a date to work towards gives you a target, and a ready made opportunity to reassess what you’re doing. Have a schedule and stick to it as best you can. This also means having a plan for tracking and analysing search data. Putting a few minutes aside each week adds up nicely over six months.
Keyword Research
This is absolutely essential to targeted SEO. If you don’t know what keywords you’re hoping to rank for how can you possibly target them? What are popular search terms in your field? What are your competitors ranking for? What is your website already ranking well for and why? With Google Search Console you can see exactly where your pages are (or aren’t) ranking for different keywords.

Google Keyword Planner
Google Trends
Moz Keyword Explorer
Ahref Keyword Generator
Keyword Overview by SEMrush

Size Up The Competition
The internet is a big place. Odds are you’re not the only one trying to rank for certain searches. Competition is fierce, and that’s good. It forces websites to improve themselves. Analyse rival websites and note what they’re doing well, as well as what you do or can do better. Remember, search engines just want to connect searchers with the best results for their queries. Being the best means being better than everyone else.

Ahref Site Explorer
Topics by SEOmonitor

Involve Colleagues In Setting Goals
SEO is a deceptively big topic that affects all aspects of a site, so it’s only reasonable to involve your colleagues when setting ambitious yet achievable goals. Everyone knows something you don’t, and you might be surprised by how much smoother SEO implementation can be when everyone’s on board with it.

Defining The Environment

Mobile-First
A lot of SEO revolves around how you organize content, and more than anything else you need to organize content well for mobile devices. More people browse on mobile devices than on desktops. In acknowledgement of this trend, Google went fully mobile-first in early 2020. This means the mobile version of your website is what crawlers look at and index. Fabulous desktop layouts are great, but SEO, like the web, is now a mobile-first world.

Google Mobile-Friendly Test
Bulk Mobile Friendly Test by Experte
Resizer by Material Design (view websites on different devices side by side)

Google’s Monopoly
For better or worse, search is currently monopolised by one company — Google. It continues to dominate the space, handling more than 90% of global mobile searches, and 70% of desktop. There are others of course — Bing, Waibu, DuckDuckGo, and more — but for the time being SEO gravitates around Google. Tick their boxes while keeping an eye on the wider terrain, which isn’t as static as you might think.

On-Page

Quality Content
That’s right, folks. All the SEO in the world will only get you so far if a website’s content is rubbish. There’s no question that there exist bad websites that perform well, but more and more are weeded out with each update. What does quality content look like? There are countless articles on the topic, but here are a few things to be aiming for — clear, original, properly sourced, well written, accessible, and honest. Search engines (generally) want to connect searchers with high-quality results.

What Is Great Content? by Search Engine Journal
Google’s Quality Rater Guidelines

Meta Titles And Descriptions
Eat your sprouts, cross your i’s and dot your t’s, and use descriptive meta titles. Every web page should have a meta title and meta description. The title should tell people and web crawlers alike what the page is about. Meta descriptions are purely for browsers’ benefit — crawlers don’t look at them. Think of them as little blurbs for when that page pops up in search results. Entice the reader.

Metatags.io

Image Alt Text
A depressing number of websites don’t do this properly. It’s so easy, and so helpful. Every image on your website should have alt text describing what the image shows. This helps crawlers understand your visual content, and allows screen readers to describe what visually impaired web browsers cannot see. Alt text also improves your chances of appearing in image search results.
Internal Links
A few years back scientists discovered that ancient Roman concrete gets stronger over time. Internal links are a prime example of a similar phenomenon in SEO. When you create a new website, linking to other, relevant parts of your site makes for a solid foundation. Continuing to do it over time makes it even stronger. Not only do internal links make websites easier to browse, but they also provide crucial context for search engine crawlers. Each one makes a site’s SEO that little bit stronger.
External Links
Some SEO types get a bit precious about ‘link juice’, loath to directing people away from their own site. While this is great for shoving people down funnels, it’s pretty slimy behavior. It’s bad for readers and it’s bad for SEO. If you cite something, link to it. If you quote someone, link to the source. Citing one’s sources is writing 101, and again, it provides context to your own content. It helps search engines to understand the type of website you are, and what sort of company you keep. Scour through your copy and make sure the appropriate external links are there.

Linkbuilding: The Citizen’s Field Guide
How To Help Your Clients Get More Backlinks Through Design

Clear Structure Markup
This is so simple and so, so important. Just like meta titles and descriptions show what a page is about, following best practice for HTML makes page structure clear and easy to understand. Use the right tags in the right places, make sure headings are arranged logically. A great way to do this is to strip away CSS and look at pages in pure HTML. If the structure isn’t obvious there then there’s work still to do. Google’s free Lighthouse assessment is good at spotting problems of this kind.
Structured Data
Semantic markup is becoming increasingly important to SEO, and web design in general. It makes your website’s content machine readable, which in turn makes it easier to crawl, understand, index, and return as sophisticated search results. There are plenty of plugins to help with this, or if you’re feeling daring the markup is simpler than you might think to add yourself. Schema has emerged as the language of choice for search engines, with Google, Microsoft, Yahoo, and others all collaborating on its development. Our guide on structured data is a good place to start.

Google Rich Result Tester

Sitemaps
Every website should have a site map. It’s the ultimate reference point for web crawlers on how pages are organized and where to find all the content you want to be found. What would a metro system be without a map? Or a library without clearly marked sections? Take the time to do this properly as doing so will save you a lot of time in the long run. A badly organized, unmapped website is typically unpleasant for both people and crawlers to browse.
Descriptive, Logical URL Structure
This is a little one, but well worth standardising early. Use clear, succinct URL structures. This denotes both site structure and page content.
E.g. www.mywebsite.com/book-reviews/catch-22-joseph-heller/ is infinitely clearer than www.mywebsite.com/js7gw788. One is clear to people and algorithms alike; the other is a random jumble of letters. Take the time to establish formats for different post types then stick to them.
Multimedia Content
Search engines like to see variety on pages — provided it loads quickly. A blog post with relevant images, audio clips, and an embedded video is likely to be more engaging than a plain text blog post. Never add these things just for the sake of adding them, but don’t be shy about getting creative. This is the internet; you can do just about anything.
Assets Optimization
Whatever media assets you have on-site, for goodness sake optimize them. Compressing image files is the most obvious example here, and often overlooked. That 2GB photograph from your family vacation might look sharp as the banner image on your photography portfolio — too bad nobody will stick around long enough for it to load. In a mobile-first world, super-high-resolution images are seldom necessary. Compress your images. Stagger CSS rollout. Your website has to be quick.

Responsive Image Breakpoint Generator by Cloudinary
Unused CSS Finder by JitBit

Off-Page

HTTPs
HTTPS (Hypertext Transfer Protocol Secure) improves the connection security between users and a website. Google and other search engines punish websites that don’t have it. Have HTTPS. Most web hosting providers throw it in for free. If they don’t, get it, or change providers.

HTTP/2 Test Tool by Geekflare

Backlinks
Credibility plays a huge part in SEO, and backlinks are a major indicator of trust. If reputable, relevant sites are linking to your site, that makes you more credible in your field. Doing this properly takes time and dedication. Nobody owes you backlinks — you have to earn them. Earn. Not buy. Black hat approaches to backlinks (spamming comment sections, paying for them, etc.) will get you nowhere. If anything search engines will catch on and punish the offending site.

Backlink Gap by SEMrush

Testing And Monitoring

Site Speed
You can’t really be sure of site speed until it’s live. Run your site through speed testing tools like PageSpeed Insights and GTmetrix. Search engines like fast websites and dislike slow ones. So do people. Keep an eye on this over time. Just because a site was fast six months ago doesn’t mean it’s fast now, since you’ve been unloading uncompressed images again. Tut tut.

PageSpeed Insights
Wattspeed
Bulk Mobile Friendly Test by Experte
TTFB (Time to First Byte) Test by Geekflare
WebPageTest

Analytics
In the long term SEO is as much about monitoring as it is about on-site changes. There are numerous free tools available for tracking search analytics. Google has Search Console (GDPR friendly) and Analytics (not always so GDPR friendly). Microsoft has the Bing panel. Then there are third party outfits like Moz, SEMRush, and Screaming Frog. As mentioned at the start of this checklist, don’t drown in numbers. Ease yourself in with essential tools and explore from there as your priorities become clearer.
Reports
Boiling down your SEO performance into regular reports makes progress more manageable. Be it weekly, monthly, or quarterly, these are vital for staying focused on your goals… and achieving them! Keeping tabs on your performance over time means you can nip problems in the bud, and make proactive adjustments to your approach.

How to Create Relevant and Engaging SEO Reports by Moz

Quick Wins

Not everyone has the time or resources to go through a full audit of their website’s SEO. That’s ok, and it doesn’t mean you have to fall behind. The following tips are particularly easy to implement, can return quick results, and allow you to keep an eye on your search performance long term.

Basic Analytics
If you’re completely new to SEO there are few better ways to get started than getting basic analytics up and running. By this, we mean Google Search Console and Google Analytics. Both are free and easy to add to a site. Having these up and running will immediately give you a better sense of your SEO situation.

Google Search Console
Google Analytics
Bing Webmaster Tools

Purge Low Quality Content
Producing great content takes time and a lot of work. Deleting rubbish content takes seconds. Your website is the sum total of its pages. If a site has a lot of ‘thin’ content, that’s going to weigh down the good stuff. Go through your existing content and honestly assess whether it’s worthy of the standard you want to live up to. If the answer’s no, maybe you should delete it. Doing this can give your SEO an immediate bounce. Depending on the site, purging low quality content can be like removing a ball and chain.
Optimize Images
A great way to speed up your website is to properly compress your images. If this isn’t something you’ve thought about before you may be slightly mortified by how big some of the files are. It can be tedious, but it has to be done and is an immediate way to speed up your site speed. And make sure they’ve all got alt text, while you’re at it.

Measure tool at web.dev
TinyJPG.com
Kraken.io

Please note that this cheat sheet will be updated occasionally, so if you think anything is missing and should be added, feel free to let us know! We’ll consider it for inclusion the next time we update the list.