R package blocksdesign. Constructs nested and crossed block designs for unstructured treatment sets with arbitrary replication not necessarily all equal. Blocks can be nested to any required depth of nesting and blocks are optimized hierarchically from the top down with successive nested blocks strata optimized within the levels of all preceding blocks strata. Block sizes are all equal in any one stratum if the number of blocks in that stratum exactly divides the number of plots, otherwise they differ by at most one plot. The design output is a data table showing a randomised allocation of treatments to blocks together with plans showing the allocation of treatments to blocks for each block in the bottom stratum of the design. D and A-efficiency factors are shown for each stratum together with A-efficiency upper bounds, where available.