Redstone circuits

A redstone circuit is a structure that activates or controls mechanisms.

Circuits are designed to act in response to player activation or to operate autonomously—either on a loop or in response to non-player activity such as mob movement, item drops, plant growth, etc. The machines controlled by redstone circuits range from simple devices such as automatic doors and light switches to complex devices such as elevators, automatic farms, or even in-game computers. Understanding how to build and use redstone circuits and the mechanisms they can control greatly increases the range of what is possible in Minecraft.

The subject of redstone structures is very broad due to the large variety of redstone circuits that can be created; this article provides only an overview of some of the different types of redstone circuits that can be built. However, all of the circuits listed on this page have their own pages as well, which go into much greater detail about them.

Redstone basics
Before describing the blocks used to build redstone circuits, the types of circuits that can be built, or how to build and understand them, an understanding of some basic concepts is required.

Redstone components
A redstone component is a block that provides some purpose to a redstone circuit.
 * A power component provides power to all or part of a circuit—e.g., redstone torch, button, lever, redstone block, target block, etc.
 * A transmission component passes power from one part of the circuit to another—e.g., redstone dust, redstone repeater, redstone comparator.
 * A mechanism component affects the environment (by moving, producing light, etc.)—e.g., piston, redstone lamp, dispenser, etc.

Power
Redstone components and blocks may be powered or unpowered. A "powered block" can be thought of as a block that is electrified. Some blocks will show their powered state visibly (for example, redstone dust lights up, a redstone lamp illuminates its surroundings, etc.), but other blocks may give no visual indication of their powered state other than their effect on other redstone components.

An opaque block (e.g., stone, sandstone, dirt or grass, etc.) powered by a power component, or by a repeater or comparator, is said to be strongly powered or hard-powered (a different concept from power level). A strongly powered block can power adjacent redstone dust (including dust on top of the block or dust beneath it).

An opaque block powered only by redstone dust (and no other components) is said to be weakly powered or soft-powered because a block powered only by redstone dust will not power other redstone dust (but can still power other components or devices, such as repeaters and pistons).

No opaque block can directly power another opaque block—there must be dust or a device in between. A transparent block can't be powered by anything. "Strong"/"hard" vs. "weak"/"soft" power applies only to opaque blocks, not to dust or other redstone components.

A powered block (strong or weak) can affect adjacent redstone components. Different redstone components react differently to powered blocks—see their individual descriptions for details.

Signal strength
"Signal strength" can vary from 0 to 15. Most power components provide power level 15, but a few provide a variable amount of power.

Redstone dust transmits power to adjacent redstone dust and blocks, but its strength decreases by 1 for each block the redstone power traveled. Redstone dust can thus transmit power up to 15 blocks before needing to be maintained with a redstone comparator or re-strengthened with a repeater. Power level only fades with the dust-to-dust transmission, not between dust and a device or block.

The power level can also be adjusted directly with a redstone comparator in comparison or subtraction mode.

Block update
When a change occurs somewhere in a redstone circuit, it can produce other changes in surrounding blocks in what is called a block update. Each of these changes can then produce other changes in their surrounding blocks. The update will propagate following the redstone circuit rules within loaded chunks (block updates will not propagate into unloaded chunks), usually very quickly.

A block update simply notifies other redstone components and blocks that a change has occurred nearby and allows them to change their own state in response, but not all updates will necessarily require changes. For example, if a redstone torch activates and updates the dust below it, the dust may already be powered from something else, in which case the dust won't change state and the update propagation will stop there.

Block updates can also be generated by any immediate neighbor block being placed, moved, or destroyed.

Solid blocks don't "know" if they're powered or not. Block updates simply update enough blocks around a redstone component to update other redstone components around the solid block (for example, a pressure plate updates its neighbors and the neighbors of the block it's attached to, which includes the space under that block which might be redstone dust).

In addition to block updates, comparators can be updated by containers (including detector rails with container minecarts on them) and certain other blocks, up to two blocks away horizontally when their state changes (for example, when their inventory changes). This is known as a comparator update.

The following redstone components produce block updates up to two blocks away by taxicab distance, including up and down:
 * Slanted rails, activator rails, detector rails, and powered rails (but not flat rails, etc.)
 * Slanted rails, activator rails, detector rails, and powered rails (but not flat rails, etc.)
 * Slanted rails, activator rails, detector rails, and powered rails (but not flat rails, etc.)

The following redstone components produce block updates in their immediate neighbors, including above and below, and in the immediate neighbors of the block they're attached to:
 * (as if "attached" to the block it is facing)
 * (as if "attached" to the block it is facing)
 * (flat only; also produces comparator updates)
 * (as if "attached" to the block beneath; also produces comparator updates)
 * (as if "attached" to the block beneath; also produces comparator updates)
 * (as if "attached" to the block beneath; also produces comparator updates)
 * (as if "attached" to the block beneath; also produces comparator updates)

The following redstone components update only their immediate neighbors when they change their state, including above and below:
 * (flat only)



The Inverted Daylight Detector is not obtainable as an item.
 * (can also activate tripwire hooks in valid tripwire circuit)


 * and Sticky Piston (from both the piston base and the piston head when extended)
 * (flat only)
 * (flat only)

The following redstone components do not produce block updates when they change their state (though any block will produce a block update in its immediate neighbors if moved or destroyed):
 * (also produces comparator updates)
 * (also produces comparator updates)
 * (also produces comparator updates)
 * (also produces comparator updates)
 * (also produces comparator updates)
 * (can be moved)
 * (also produces comparator updates)
 * (can be moved)
 * (can be moved)
 * (can be moved)

Redstone tick
A redstone tick is a unit of measure that is equal to two game ticks, 0.1 seconds. Most redstone components take a multiple of a redstone tick to change states. Redstone torches, redstone repeaters, and mechanism components require one or more ticks to change state, so it can take several ticks for a signal to propagate through a complicated circuit.

Redstone ticks differ from "game ticks" (20 per second) and "block ticks" (block updates that occur at each game tick). When discussing redstone circuits, a "tick" is always a redstone tick, unless otherwise specified.

Signals and pulses
Circuits with a stable output are said to produce a signal — an ON signal (also "high" or "1") if powered, or an OFF signal ("low", "0") if unpowered. When a signal changes from OFF to ON and then back again, that is described as a pulse (or ON pulse), while the opposite is described as an OFF pulse. ON pulses are far more common, and in casual discussion, "a signal" often refers to an ON pulse.

Very short pulses (1 or 2 ticks) can cause problems for some components or circuits because they have different update sequences to change states. For example, a redstone torch or a comparator will not respond to a 1-tick pulse made by repeaters.

Activation
Mechanism components (pistons, doors, redstone lamps, etc.) can be activated, which causes the mechanism component to do something (push a block, open the door, turn on, etc.).

All components are activated by:


 * an adjacent active power component, including above or below.
 * Exceptions: A redstone torch will not activate a mechanism component it is attached to, and a piston is not activated by a power component directly in front of it


 * an adjacent powered opaque block (either strongly-powered or softly-powered), including above or below.
 * a powered redstone comparator or redstone repeater facing the mechanism component.
 * powered redstone dust configured to point at the mechanism component (or on top of it, for mechanical components that can support redstone dust, but not beneath it), or adjacent "directionless" redstone dust; a mechanism component is not activated by adjacent powered redstone dust that is not configured to point at it.

Some mechanism components only perform an action when initially activated (command blocks execute a command, droppers, and dispensers eject an item, note blocks play a sound) and won't do anything again until deactivated and then activated again, while other mechanism components change their state when activated and don't change back until the activation ends (redstone lamps stay on, doors/fence gates/trapdoors stay open, hoppers stay disabled, pistons stay extended, etc.).

Some mechanism components have additional ways of being activated:


 * Pistons, dispensers, droppers, and can also be activated if one of the methods above would activate a mechanism component in the block above the component, even if there is no mechanism component there (even if the block above the component is air or a transparent block). This rule is often simplified to saying that the components can be powered by blocks diagonally above or two blocks above, but other methods of such activation exist (see image to the right). This method of activation is known as quasi-connectivity because the mechanism component's activation is somewhat connected to the space above it.
 * Doors occupy two spaces, one above the other, and anything that activates either space also activates the other.

Powered vs. activated
For opaque mechanism components (command blocks, dispensers, droppers, note blocks, and redstone lamps), it is important to make a distinction between a mechanism component being activated and being powered (and this is the reason why mechanism components are described as activated instead of just saying they are powered).


 * A mechanism component is powered if it could power adjacent redstone dust, repeaters, or comparators.
 * A mechanism component is activated if it is doing something (or has done something and is waiting to be activated again).

Any method of powering a mechanism component (such as a redstone torch underneath it) will also activate it, but some activation methods (such as a redstone torch next to or above a mechanism component) won't actually power the component (following the usual rules for power components).

Non-opaque mechanism components (doors, fence gates, hoppers, pistons, rails, trapdoors) can be activated (they can do things), but cannot be powered (in the sense that they can then power adjacent redstone dust, etc.).

Circuit vs. mechanism
These terms are sometimes used interchangeably to describe structures that incorporate redstone components, but a useful distinction can be made between the two:
 * A circuit performs operations on signals (generating, modifying, combining, etc.).
 * A mechanism manipulates the environment (moving blocks, opening doors, changing the light level, producing sound, etc.).

All mechanisms will necessarily incorporate redstone components or circuits, but a circuit by itself doesn't have to affect the environment (except possibly incidentally, such as a redstone torch changing its light level when changing its power state, or a piston moving a block to fulfill a role within the circuit). Making this distinction allows us to talk about circuits without having to define a specific in-game purpose for them, allowing players to find their own reasons to use them.

This article and the other articles on redstone circuits discuss only circuits that operate on signals. For articles about mechanisms, see the list of tutorials at the end of the article.

Size
The wiki describes circuit size (the volume of the rectangular solid it occupies) with the notation of shorter width &times; longer width &times; height, including support/floor blocks, but not including inputs/outputs.

Another method used for describing circuit size in the Minecraft community is to ignore non-redstone blocks simply used for support (for example, blocks under redstone dust or repeaters). However, this method is unable to distinguish between flat and 1-high circuits, as well as some other circuit differences.

Sometimes it is convenient to compare circuits simply by the area of their footprint (e.g., 3×4 for a circuit three-block wide by four blocks long), or by a single dimension important in a particular context (e.g., length in a sequence of sub-circuits, height in a confined space, etc.).

Features
Several features may be considered desirable design goals:


 * 1-high
 * A structure is 1-high (aka "1-tall") if its vertical dimension is one block high (meaning it cannot have any redstone components that require support blocks below them, such as redstone dust or repeaters). Also see flat.


 * 1-wide
 * A structure is 1-wide if at least one of its horizontal dimensions is one block wide.


 * Flat
 * A structure is flat if it generally can be laid out on the ground with no components above another (support blocks under redstone components are okay). Flat structures are often easier for beginners to understand and build, and fit nicely under floors or on top of roofs. Also see 1-high.


 * Flush
 * A structure is flush if it doesn't extend beyond a flat wall, floor, or ceiling and can still provide utility to the other side, though redstone mechanisms may be visible in the wall. Flush is a desirable design goal for piston-extenders, piston doors, etc. Also see hipster and seamless.


 * Hipster
 * A structure is hipster if it is initially hidden behind a flat wall, floor, or ceiling and can still provide utility to the other side. Also see flush and seamless.
 * A structure is hipster if it is initially hidden behind a flat wall, floor, or ceiling and can still provide utility to the other side. Also see flush and seamless.


 * Instant
 * A structure is instant if its output responds immediately to its input (a circuit delay of 0 ticks).


 * Seamless
 * A structure is seamless if no redstone components are visible both before and after it completes its task (but it's okay if some are visible during operation). Seamless is a desirable design goal for piston-extenders, piston doors, etc. Also see flush and hipster


 * Silent
 * A structure is silent if it makes no noise (such as from piston movement, dispenser/dropper triggering when empty, etc.). Silent structures are desirable for traps, peaceful homes.


 * Stackable
 * A structure is stackable if it can be placed directly next to other copies of itself, and they all can be controlled as a single unit. Also see tileable.


 * Tileable
 * A structure is tileable if it can be placed directly next to other copies of itself, and each copy can still be controlled independently. Also see stackable.


 * Structures might be described as "2-wide tileable" (tileable every two spaces in one dimension), or "2&times;4 tileable" (tileable in two directions), etc. Some structures might be described as "alternating tileable", meaning they can be placed next to each other if every other one is flipped or a slightly different design.

Other design goals may include reducing the delay a sub-circuit adds to a larger circuit, reducing the use of resource-expensive components (redstone, nether quartz, etc.), and re-arranging or redesigning a circuit to make it as small as possible

Circuit types
Although the number of ways to construct circuits is endless, certain patterns of construction occur over and over again. The following sections attempt to categorize the circuits that have proven useful to the Minecraft community, while the main articles describe the specific circuits that fall into those categories.

Some of these circuits might be used by themselves for simple control of mechanisms, but frequently the player will need to combine them into more complex circuits to meet the needs of a mechanism.

Transmission circuit
Some aspects of signal transmission can be helpful to understand: transmission types, vertical transmission, repeaters, and diodes.


 * Vertical transmission


 * Although horizontal signal transmission is pretty straight-forward, vertical transmission involves options and trade-offs.
 * Redstone staircases: The simplest way to transmit signals vertically is by placing redstone dust on blocks diagonally upwards, either in a straight staircase of blocks, in a 2×2 spiral of blocks, or another similar variation. Redstone staircases can transmit signals both upwards and downwards but can take up a lot of space and will require repeaters every 15 blocks.
 * Redstone ladders: Because glowstone, upside-down slabs, glass and upside-down stairs can support redstone dust but don't cut redstone dust, signals can be transmitted vertically (upwards only) by alternating these blocks in a 2×1 "ladder". Redstone ladders take up less space than redstone staircases but also require repeaters every 15 blocks. $$, hoppers and glass can be used to create two-way vertical ladders that transmit signals both upwards and downwards.
 * Torch towers and torch ladders: A redstone torch can power a block above it, or redstone dust beneath it, allowing vertical transmission both upwards or downwards (different designs are required for each). Because it takes each torch a little time to change state, a torch tower can introduce some delay into a circuit, but no repeaters are necessary. However, every torch inverts the redstone signal (i.e. changes it from powered to unpowered), so having an even number of torches is required.
 * Observer towers: An observer can power a block of a redstone circuit above or below it, allowing vertical transmission both upwards and downwards. Placing blocks that can be activated, such as redstone dust, noteblocks, or doors, both above and below it creates a state change when the observer is looking downwards or downwards when the observer is looking upwards. Repeating this pattern means that updates will be chained.


 * Repeater


 * To "repeat" a signal means to boost it back up to full strength. The easiest way to do this is with a redstone repeater. Variations include:
 * Instant repeater: Repeats a solid signal without the delay introduced by a redstone repeater.
 * Two-way repeater: Repeats a signal in both directions.


 * Diode


 * A "diode" is a one-way circuit that allows a signal to travel only in one direction. It is used to protect another circuit from the chance of a signal trying to enter through the output, which could incorrectly change the circuit's state or interfere with its timing. It is also used in a compact circuit to keep one part of the circuit from interfering with another. Common choices for a diode include a redstone repeater or a height elevation to glowstone or an upside-down slab which won't transmit a signal back downwards.


 * Many circuits are already one-way simply because their output comes from a block that can't take input. For example, a signal cannot be pushed back into a circuit through a redstone torch except through the block it's attached to.

Logic circuit
It's sometimes necessary to check signals against each other and only output a signal when the inputs meet some criteria. A circuit that performs this function is known as a logic gate (a "gate" that only allows signals through if the "logic" is satisfied).


 * NOT gate


 * A NOT gate (aka "inverter") is on if its input is off.


 * OR gate


 * An OR gate is on if any of its inputs are on.


 * NOR gate


 * A NOR gate is on only if none of its inputs are on.


 * AND gate


 * An AND gate is on only if all of its inputs are on.


 * NAND gate


 * A NAND gate is on if any of its inputs are off.


 * XOR gate


 * An XOR gate is on if its inputs are different.


 * XNOR gate


 * An XNOR gate is on if its inputs are equal.


 * IMPLY gate


 * An IMPLY gate is on unless the first input is on and the second input is off.

Pulse circuit
Some circuits require specific pulses, other circuits use pulse duration as a way to convey information. Pulse circuits manage these requirements.

A circuit that is stable in one output state and unstable in the other is known as a monostable circuit. Many pulse circuits are monostable because their OFF state is stable, but their ON state will quickly (or eventually) revert to OFF.


 * Pulse generator
 * A pulse generator produces a pulse of a specific duration.


 * Pulse limiter
 * A pulse limiter (aka pulse shortener) reduces the duration of pulses that are too long.


 * Pulse extender
 * A pulse extender (aka pulse sustainer, pulse lengthener) increases the duration of pulses that are too short.


 * Pulse multiplier
 * A pulse multiplier outputs multiple pulses for every input pulse (it multiplies the number of pulses).


 * Pulse divider
 * A pulse divider (aka pulse counter) only outputs a signal after a certain number of pulses have been detected through the input (the number of pulses is indicative of the number of loops).


 * Edge detector
 * An edge detector reacts to either a signal changing from OFF to ON (a "rising edge" detector), from ON to OFF (a "falling edge" detector), or both (a "dual edge" detector).


 * Pulse length detector
 * A pulse length detector reacts only to pulses in a certain range of durations (often only to pulses of one specific duration).

Clock circuit
A clock circuit is a pulse generator that produces a loop of specific pulses repeatedly. Some are designed to run forever, while others can be stopped and started.

A simple clock with only two states of equal duration is named for the duration of its ON state (e.g., for example, a clock that alternates between a 5-tick ON state and a 5-tick OFF state is called a 5-clock) while others are usually named for their period (the time it takes for the clock to return to its original state; for example, a "1-minute clock" might produce a 1-tick pulse every 60 seconds).


 * Observer clock
 * A repeating clock made with Observers and Pistons (an Observer looking at a piston)


 * Repeater clock
 * A repeater clock consists of a loop of repeaters (usually either redstone repeaters or redstone torches) with occasional dust or blocks to draw off the appropriate pulses.


 * Hopper clock
 * A hopper clock produces timed pulses by moving items around between hoppers and drawing signals off with redstone comparators.


 * Piston clock
 * A piston clock produces a loop of pulses by passing a block back and forth (or around, with many pistons) and drawing off a pulse when the block is in a certain location.


 * Comparator clock
 * The clock of short or moderate cycle length utilizing comparator's subtraction or signal fading feature. Clocks can also be built using daylight sensors, minecarts, boats, water flow, item despawn, etc.

Memory circuit
Unlike a logic circuit whose state always reflects its current inputs, a memory circuit's output depends not on the current state of its inputs, but on the history of its inputs. This allows a memory circuit to "remember" what state it should be in, until told to remember something else. There are five basic types of memory circuits. (A few circuits combine two different types.)


 * RS latch
 * An RS latch has two inputs, one to set the output on and another to reset the output back to off. An RS latch built from NOR gates is known as an "RS NOR latch", which is the oldest and most common memory circuit in Minecraft.


 * T flip-flop
 * A T flip-flop is used to toggle a signal (like a lever). It has one input, which toggles the output between on and off.


 * Gated D latch
 * A gated D latch has a "data" input and a "clock" input. When the clock input turns on, it sets the output to equal its data input. Not to be confused with a D flip-flop, which only sets the output equal to its data input on a clock rising transition.


 * JK latch
 * A JK latch has two inputs, one to set the output on and another to reset the output back to off (like an RS latch), but when both turn on simultaneously it toggles the output between on and off (like a T flip-flop).


 * Counter
 * Unlike T flip-flops and RS latches, which can only hold two states (ON or OFF), a counter can be designed to hold a greater number of states.

Many other memory circuits are possible.

Miscellaneous circuits
These circuits aren't generally needed for the redstone projects, but might find use in complex projects, proofs of concept, and thought experiments. Some examples:


 * Multiplexers and relays


 * A multiplexer is an advanced form of logic gate that chooses which of two inputs to let through as output based on an additional input (for example, if input A is ON then output-input B, otherwise output-input C). The reverse of this is a relay, which copies a data input to one of two outputs, depending on whether the additional input is ON or OFF.


 * Randomizers


 * A randomizer produces output signals unpredictably. Randomizers can be designed to produce a pulse at random intervals, or to randomize which of multiple outputs are turned ON (such as random number generators, or RNGs). Some randomizers use the random nature of Minecraft (such as cactus growth or dispenser slot selection), while others produce pseudo-randomness algorithmically.


 * Multi-bit circuits


 * Multi-bit circuits treat their input lines as a single multi-bit value (something other than zero and one) and perform an operation on them all at once. With such circuits, possibly combined with arrays of memory circuits, it's possible to build calculators, digital clocks, and even basic computers inside Minecraft.


 * Block update detectors


 * A block update detector (BUD, or BUD switch) is a circuit that reacts to a block changing its state (for example, stone being mined, water changing to ice, a pumpkin growing next to a pumpkin stem, etc.). BUDs react by producing a pulse, while T-BUDs (toggleable BUDs) react by toggling their output state. These are generally based on subtle quirks or glitches in device behavior; current circuits most often depend on pistons. As of Java Edition 1.11, many of the functions of BUDs were condensed into the observer. The addition of this was made to move toward feature parity with versions.

Many other complex circuits are possible.

Planning
The first step in building a redstone circuit is to decide what it will do and how, in general, it will operate.


 * How and where will it be controlled?
 * Will the circuit be controlled by the player, by mob movement, or something else?
 * What mechanism components will it control?
 * What is an efficient first design?
 * Although refinement often occurs in later stages of the build, starting on a strong foot to tackle the idea will be beneficial later on. Allowing an inefficient/flawed design to manifest can hinder development.
 * How will the signal be transmitted from the controls to the mechanisms?
 * Will signals need to be combined from multiple sources?

Construction
It can be helpful to choose a specific set of blocks the player uses to construct circuits. Then, when the player runs into these blocks during the excavation of new rooms in the base, the player knows they are about to damage a previously-built circuit. Common choices include stone bricks, snow block, wool and concrete. (Using different colors of wool and concrete is also a great way to keep track of different circuits)

Be careful when building circuits near water or lava. Many redstone components will "pop off" (turn into items) when washed over by liquids, and lava will destroy any items it contacts.

Be careful when building circuits to activate TNT (traps, cannons, etc.). Circuits in mid-construction can sometimes briefly power up unexpectedly, which might activate TNT. For example, placing a redstone torch on a powered block, it won't "figure out" that it should be turned off until the next tick, and can briefly power another part of the circuit until then. Placing TNT after the rest of the circuit is complete will help to avoid such problems and the destruction of the device itself. This also applies to any other features of the circuit that may be accidentally activated with such actions (e.g., activating a dispenser before the circuit is ready).

Problem-solving
When the circuit isn't working the way it should, take a look at it and try to find the problem. Work through the circuit and test various inputs to find where a signal is "dropped" or gained inadvertently.


 * What part of the wiring actually is not behaving as expected. The output behaving unexpected might seem like a problem, but the actual problem resides somewhere in the wring.
 * Trying to draw power from a softly-powered block? Maybe a redstone repeater is needed to either strongly-power the block or to pull power out of it.
 * Trying to transmit power through a non-opaque block? Replace it with an opaque block, or go around it.
 * Was a short-circuit created and a redstone torch that should be powered is now burned out? Fix the short-circuit and update the torch to get things going again.
 * Are parts of the circuit activating when they shouldn't be? Maybe accidentally "crossed wires" are allowing a signal from one part of the circuit to activate another part of the circuit, or a repeater's output is being cycled back into its input.
 * Did the circuit accidentally lose the intended behavior?
 * Are pistons, dispensers, or droppers being indirectly powered?
 * Is the circuit following a tutorial from an older version of Minecraft which no longer works in the current version?

Refining
Once the circuit is working, consider if it can be improved (without breaking it).


 * Can the circuit be faster?
 * Reducing the number of components or distance a signal has to travel through can speed up the circuit.
 * Can the circuit be smaller?
 * Can fewer blocks be used?
 * Can the redstone dust lines be shortened?
 * Can compact logic gates be used in the circuit?
 * Are unnecessary components used?
 * Can the circuit be more robust?
 * Will the circuit still work when activated by a very short pulse?
 * Will the circuit still work when activated and deactivated rapidly in succession?
 * Did an update create the opportunity for a better circuit? (e.g., comparators, locking repeaters, observer, etc.)
 * Can the circuit be quieter?
 * Fewer sound-emitting blocks (e.g. pistons, dispensers and droppers, doors, trapdoors, fence gates, and note blocks) will make your device more stealthy around other players.
 * Can any lag be reduced? Machines with many redstone components frequently changing state can cause light, sound, particle, or update lag.
 * Redstone dust creates hundereds of block updates whenever it changes states, and the more the signal strength changes, the more block updates it will produce. Reducing the length of redstone lines will significantly decrease lag. An alternative to redstone dust lines is to use lines of rails which update observers, as rails create much less block updates than dust.
 * Hoppers and hopper minecarts especially may be trying to do several action every gametick (accept items pushed into them, push items into other containers, check for item entities above them). Powering unneeded hoppers to disable them or placing containers (such as composters or droppers) above them to disable their item entity checks can help to reduce lag.
 * Redstone torches and redstone lamps change their light level when they change state. Light changes can cause block light updates in hundreds of block tiles around each component. Concealing the component in opaque blocks or placing permanent block light sources (torches, glowstone, etc.) nearby can reduce lag from block light updates.
 * Several redstone components produce particles (redstone torches, redstone dust, but especially fireworks fired from dispensers). Too many particles may overload Minecraft's particle rendering and then some particles may fail to render until old particles have disappeared.
 * Every time a block is moved by a piston it can produce block updates in its neighbours so moving too many blocks at once can produce lag.
 * Several redstone components produce sound when activated or deactivated (pistons, dispensers and droppers, doors, trapdoors, fence gates, and note blocks). Too many sounds at once can overload Minecraft's sound engine and produce lag.